Day5
JDBC
jdbc:Java DataBase Connectivity,java数据库的连接
1.使用到类和接口
DriverManager
Connection
Statement
ResultSet
2.jdbc的操作步骤
第一步,加载数据库的驱动
DriverManager里面registerDriver(Driverdriver)
使用反射的方式加载数据库的驱动
Class.forName("com.mysql.jdbc.Driver");
第二步,创建与数据库的连接
DriverManager里面getConnection(Stringurl, String user, String password)
第三步,编写sql语句
第四步,执行sql语句
Statement里面executeQuery(Stringsql)
第五步,释放资源(关闭连接)
3.Statement对象
执行查询操作方法
ResultSetexecuteQuery(String sql) ,返回查询的结果集
执行增加 修改 删除的方法
intexecuteUpdate(String sql) ,返回成功的记录数
执行sql语句的方法
booleanexecute(String sql) ,返回是布尔类型,如果执行的是查询的操作返回true,否则返回的false
执行批处理的方法
addBatch(Stringsql):把多个sql语句放到批处理里面
int[]executeBatch():执行批处理里面的所有的sql
4.使用jdbc进行crud操作
(1)实现对数据库表记录进行查询的操作
*executeQuery(sql)
(2)实现对数据库表记录进行增加的操作
*executeUpdate(sql)
(3)实现对数据库表记录进行修改的操作
*executeUpdate(sql)
(4)实现对数据库表记录进行删除的操作
*executeUpdate(sql)
5.jdbc工具类的封装
有两种方式读取配置文件
第一种,使用properties类
(1)代码
//创建properties对象
Propertiesp = new Properties();
//文件的输入流
InputStreamin = new FileInputStream("src/db.properties");
//把文件的输入流放到对象里面
p.load(in);
Stringdrivername = p.getProperty("drivername");
Stringurl = p.getProperty("url");
Stringusername = p.getProperty("username");
Stringpassword = p.getProperty("password");
第二种,使用ResourceBundle类
*使用范围:首先读取的文件的格式需要时properties,文件需要放到src下面
(1)代码
Stringdrivername =ResourceBundle.getBundle("db").getString("drivername");
Stringurl = ResourceBundle.getBundle("db").getString("url");
Stringusername =ResourceBundle.getBundle("db").getString("username");
Stringpassword =ResourceBundle.getBundle("db").getString("password");
代码
publicstatic String drivername;
publicstatic String url;
publicstatic String username;
publicstatic String password;
//在类加载时候,执行读取文件的操作
static{
drivername= ResourceBundle.getBundle("db").getString("drivername");
url= ResourceBundle.getBundle("db").getString("url");
username= ResourceBundle.getBundle("db").getString("username");
password= ResourceBundle.getBundle("db").getString("password");
}
6. sql的注入和防止
防止sql的注入
(1)使用PreparedStatement预编译对象防止sql注入
(2)创建PreparedStatement对象prepareStatement(String sql)
(3)PreparedStatement接口的父接口Statement
(4)什么是预编译
(5)步骤:
第一步,加载驱动,创建数据库的连接
第二步,编写sql
第三步,需要对sql进行预编译
第四步,向sql里面设置参数
第五步,执行sql
第六步,释放资源
(6)代码
//使用工具类得到数据库的连接
conn= MyJdbcUtils.getConnection();
//编写sql
Stringsql = "select * from user where username=? and password=?";
//对sql进行预编译
psmt= conn.prepareStatement(sql);
//设置参数
psmt.setString(1,username);
psmt.setString(2,password);
//执行sql
rs= psmt.executeQuery();
if(rs.next()){
System.out.println("loginsuccess");
}else {
System.out.println("fail");
}
7. 使用PreparedStatement预编译对象实现crud的操作
注意地方:
第一,编写sql时候,参数使用?表示(占位符)
第二,预编译sql,设置参数的值,执行sql
使用PreparedStatement预编译对象实现查询的操作
预编译对象executeQuery()执行查询语句
使用PreparedStatement预编译对象实现增加的操作
预编译对象executeUpdate()执行增加的语句
使用PreparedStatement预编译对象实现修改的操作
预编译对象executeUpdate()执行修改的语句
使用PreparedStatement预编译对象实现删除的操作
预编译对象executeUpdate()执行删除的语句