JDBC
概念
用Java来操作数据库,官方定义地一套操作所有关系型数据库地规则(接口),各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口编程,真正执行地代码是驱动jar包中地实现类。
快速入门
步骤
1. 导入驱动jar包
2. 注册却动
3. 获取数据库连接对象 Connection
4. 定义sql语句
5. 获取执行sql语句的对象 Statement
6. 执行sql,接收返回结果
7. 处理结果
8. 释放资源
详解各个对象
-
DriverManager:驱动管理对象
- 功能:
- 注册驱动:告诉程序使用哪个数据库jar包,上面步骤1就是调用了DriverManager中的registerDriver方法
- 获取数据库连接:
- 方法:static Connection getConnection(String url, String user, String password)
- 参数:
- url:指定连接的路径
- jdbc:mysql://IP:端口/数据库名
- eg:jdbc:mysql://localhost:3306/db3
- user:用户名
- password:密码
- url:指定连接的路径
- 功能:
-
Connection:数据库连接对象
- 功能:
- 获取执行sql的对象
*. Statement createStatement()
*. PreparedStatement prepareStatement(String sql) - 管理事务:
- 开启事务:void setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务
- 提交事务:void commit();
- 回滚事务:rollback()
- 获取执行sql的对象
- 功能:
-
Statement:执行sql对象
- 功能:执行sql
- int executeUpdate(String sql):一般执行DML语句
- 返回值:是影响的行数。可以通过这个影响的行数来判断DML语句是否执行成功
- ResultSet executeQuery(String sql) :执行DQL(select)语句
- int executeUpdate(String sql):一般执行DML语句
- 功能:执行sql
-
ResultSet:结果集对象,封装
- 方法:
- next():光标向下移动一行
- getXxx(参数):获取数据,其中Xxx表示数据类型
参数:
* int:代表列的编号
* String:代表列的名称 - 注意:
- 使用步骤:
- 游标向下移动一行
- 判断是否有数据
- 获取数据
- 使用步骤:
- 方法:
-
PreparedStatement:执行sql的对象
- SQL注入问题:在拼接SQL时,有一些SQL的特殊关键字参与字符串的拼接,会造成安全性问题。
- 解决sql注入问题,使用PreparedStatement对象来接
- 预编译SQL:参数使用?作为占位符
- 步骤:
- 导入驱动jar包
- 注册驱动
- 获取数据库连接对象 Connection
- 定义sql语句
- 注意:参数使用?作为占位符
- 获取执行sql语句的对象 PreparedStatement
- 给?赋值:
- 方法: setXxx(参数1,参数2)
- 参数1:问号的位置
- 参数2:问号的值
- 方法: setXxx(参数1,参数2)
- 执行sql,不需要传sql,接收返回结果
- 处理结果
- 释放资源
注:以后都是用PreparedStatement来执行SQL对象,防止SQL注入问题,提高效率
抽取JDBC工具类:JDBCUtils
* 目的:简化书写
* 分析:
1. 注册驱动抽取
2. 抽取一个方法获取连接对象
* 需求:不传递参数,且需保证工具类的通用性
* 解决:配置文件
jdbc.properties
url =
user =
password =
3. 抽取一个方法来释放资源
JDBC控制事务
1. 事务:一个包含多个步骤的业务操作。如果这个业务操作被事务管理,则这多个操作要么同时成功,要么同时失败。
2. 操作
1. 开启事务:在执行sql前开启事务
2. 提交事务:在所有操作结束后提交事务
3. 回滚事务:遇到错误时则回滚事务
3. 使用Connection对象来管理事务
* 开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false
* 提交事务:commit()
* 回滚事务:rollback()
来源:CSDN
作者:CoulsonYing
链接:https://blog.csdn.net/ybc0320/article/details/104076125