JDBC
- Java DataBase Connectivity - Java 数据库连接
- 本质: 官方定义的一套操作所有关系型数据库的规则,即接口. 各个数据库厂商实现这套接口,提供数据库jar包,我们可以使用这套接口(JDBC)编程, 真正执行的代码是驱动jar包中的实现类.
1.JDBC入门
- 步骤:
- 导入驱动jar包
- 复制jar包到项目目录下
- 右键 -> Add As Library
- 注册驱动
- 获取数据库连接对象 Connection
- 定义SQL
- 获取执行SQL语句的对象 Statement
- 执行SQL, 接收返回结果
- 处理结果
- 释放资源
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/emp?serverTimezone=UTC", "root", "Hhn004460");
String sql = "UPDATE emp SET MGR = 7760 WHERE empNO = 7839";
StatementStatement stmt = conn.createStatement();
int count = stmt.executeUpdate(sql);
System.out.println(count);
stmt.close();
conn.close();
JDBC各个对象
1. DriverManager
- 驱动管理对象
- 功能:
- 注册驱动 -> 告诉程序该使用哪一个数据库驱动jar包
static void Register Diver(Driver driver)
-> 注册与给定驱动程序 DriverManager- 写代码使用:
Class.forName("com.mysql.cj.jdbc.Driver")
; - 通过查看源码发现: 在com.mysql.cj.jdbc.Driver 类中存在静态代码块
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
- 获取数据库连接
- 方法:
stactic Connection getConnection(String url, String user, String password);
- 参数:
- url -> 指定连接路径 ->
jdbc:mysql://IP:PORT/DATABASE + ?serverTimezone=UTC
- user -> 用户名
- password -> 密码
2. Connection
- 数据库连接对象
- 功能:
- 获取执行sql的对象
Statement createStatement()
PreparedStatement perparedStatement(String url)
- 管理事务
- 开启事务 ->
setAutoCommit(boolean autoCommit)
- 参数设置为false, 即开启事务 - 提交事务 ->
commmit()
- 回滚事务 ->
rollback()
3. Statement
- 执行SQL对象
- 执行sql
boolean execute(String sql)
- 可执行任意sqlint executeUpdate(String sql)
- 执行DML语句, DDL语句
- 返回值 - 影响的行数, 通过返回值判断是否执行成功 - 返回值 > 0
ResultSet executeQuery(String sql)
- 执行DQL
4. ResultSet
- boolen next(); -> 游标向下移动一行 - 返回值判断当前行是否是最后一行末尾(是否有数据), 是则返回false
- getXxx(参数); -> 获取数据
- Xxx ->数据类型
- 参数 -> int(列的编号)从1开始 / String(列名)
- 注意:
- 使用步骤:
- 游标向下移动一行
- 判断是否有数据
- 获取数据
- 练习
- 定义一个方法,查询emp表的数据,将其封装为对象,然后装在集合,最后返回
- 定义一个Emp类
- 定义一个方法 ->
public List<Emp> findAll(){...}
- 实现方法 ->
SELECT * FORM emp;
5. PreparedStatement
抽取JDBC工具类 - HDBCUtils
- 简化书写
- 分析:
- 抽取注册驱动
- 抽取一个方法获取连接对象
- 抽取释放资源
- 练习需求:
- 通过键盘录入用户名和密码
- 判断用户释放登陆成功
JDBC 控制事务
- 事务 - 一个包含多个步骤的业务操作,如果这个操作被事务管理,则要么同时成功,要么同时失败
- 操作 -> START -> COMMIT -> ROLLBACK
- 使用Connection 对象管理事务:
- 开启事务 ->
setAutoCommit(boolean autoCommit)
- 参数设置为false, 即开启事务
- 提交事务 ->
commmit()
- 回滚事务 ->
rollback()