JDBC(Java DataBase Connectivity)就是用Java语言操作关系型数据库的一套API
JDBC的步骤固定,大体分为8个步骤,以MySQL数据库为例
1.创建工程并导入驱动jar包
2.注册驱动
注册驱动的目的是告诉代码要执行哪一个jar包
Class.forName(com.mysql.jdbc.Driver); //不常用,因为MySQL5之后的jar包里已经包含了,所以使用时可以省略
3.获取数据库连接
Connection conn = DriverManager.getConnection(url,username,password);
其中url是固定写法,为 jdbc:mysql://MySQL对应的ip:端口号/对应的数据库
例如 jdbc:mysql:127.0.0.1:3306/db1
4.定义SQL语句
String sql = " ";
5.获取执行SQL语句的对象
Statement stmt = conn.createStatement();
6.执行SQL语句
int count = stmt.executeUpdate(); stmt.executeQuery();
//count是执行SQL语句所受影响的行数
7.处理返回结果
8.释放资源
stmt.close();
conn.close();
使用JDBC时要使用大量的API,其中有DriverManager,Connection,Statement,ResultSet,
PreparedStatement。
1.DriverManager驱动管理类,主要用于 注册驱动 和 获取数据库连接。
2.Connection可以获取执行SQL的对象,还可以管理事务
SQL注入就是通过操作输入,用字符串拼接来修改事先定义好的SQL语句,用来达到执行代码攻击服务器的效果
用异常处理机制来对事务进行管理。
3.Statement用来执行SQL语句
4.ResultSet结果集对象,封装了DQL查询语句的结果,因为是结果集,所以获取查询结果时,需要循环依次获取。
while(result.next()){
result.getXxx(参数);
}
5.PreparedStatement继承自Statement,也就可以执行SQL语句,但可以预防SQL注入,即用问号替代参数
定义了PreparedStatement后就不用定义Statement了,而且因为使用预编译对象获取连接时,因为传入了SQL语句,后期执行时便不需要再次传入SQL作为参数了。因为使用问号作为占位符,则每次执行的SQL语句模板都一样,只需要检查,编译一次,因此速度更快
-------------------------------------------------
数据库连接池
有了连接池,就不用DriverManager来获取数据库连接了。
使用步骤:导入jar包,定义配置文件,加载load配置文件,获取数据库连接池对象,获取连接