一、什么是JDBC?
JDBC 全称是 Java Data Base Connectivity,翻译过来就是Java数据库连接。你可以把它理解成Java程序和数据库之间的“通用连接器”。
1. 它的核心作用
- 它是Java官方提供的一套API(接口),用来规范所有Java程序怎么和数据库打交道。
- 不管你用的是MySQL、Oracle还是SQL Server,只要实现了JDBC规范,Java程序都能用同一套代码去操作,不用为每个数据库单独写一套逻辑。
- 你项目里的
DBUtils工具类,就是用JDBC写的,用来获取数据库连接、执行SQL语句。
2. 它为什么这么重要?
没有JDBC,你的Java程序根本碰不到数据库。你写的图书增删改查功能,底层全是靠JDBC来完成的。
二、JDBC 完整流程(你项目里的实际步骤)
你写的DBUtils和DAO层,本质上就是按这个流程来的:
1. 加载并注册驱动
告诉Java程序,我们要用哪个数据库的驱动,比如MySQL的驱动:
Class.forName("com.mysql.cj.jdbc.Driver");
就像给电脑装了个“连接MySQL的驱动程序”,Java程序才能认识MySQL。
2. 获取数据库连接
用DriverManager拿到和数据库的连接对象:
Connection con = DriverManager.getConnection(url, username, password);
这一步就像Java程序和数据库之间建立了一条“通道”,后面的操作都要靠这个通道。
3. 创建Statement对象
用来执行SQL语句,比如PreparedStatement:
PreparedStatement pst = con.prepareStatement(sql);
它就是你在通道里“发送SQL指令的工具”,你写的insert、select语句都要靠它执行。
4. 执行SQL语句
- 增删改用
executeUpdate(),返回受影响的行数 - 查询用
executeQuery(),返回ResultSet结果集
// 增删改
int rows = pst.executeUpdate();
// 查询
ResultSet rs = pst.executeQuery();
5. 处理结果集(查询时用)
遍历ResultSet,把查到的数据封装成JavaBean对象:
while (rs.next()) {Book book = new Book();book.setId(rs.getInt("id"));book.setBook_name(rs.getString("book_name"));
}
6. 关闭资源
一定要关闭ResultSet、Statement、Connection,不然会造成资源泄漏:
DBUtils.close(rs, pst, con);
这就是你写的DBUtils.close()方法的作用,把所有资源安全释放掉。
三、什么是CRUD操作?
CRUD 是四个单词的缩写,就是你项目里的增删改查:
- Create:创建(新增)
- Read:读取(查询)
- Update:更新(修改)
- Delete:删除
你写的图书管理项目,DAO层的所有方法,本质上就是这四个操作。
1. 项目里的CRUD示例
(1)Create 新增
public int addBook(Book book) {String sql = "insert into book(book_name,author,price,publish_date) values (?,?,?,?)";// ... 执行SQL
}
(2)Read 查询
// 查询所有
public List<Book> getAllBooks() {String sql = "select * from book";// ... 执行SQL,封装结果
}
// 按id查询
public Book getBookById(int id) {String sql = "select * from book where id=?";// ... 执行SQL,封装结果
}
(3)Update 修改
public int updateBook(Book book) {String sql = "update book set book_name=?,author=?,price=?,publish_date=? where id=?";// ... 执行SQL
}
(4)Delete 删除
public int deleteBook(int id) {String sql = "delete from book where id=?";// ... 执行SQL
}
四、答辩高频考点(学生版)
-
什么是JDBC?你项目里怎么用的?
答:JDBC是Java连接数据库的一套标准接口,我项目里的DBUtils工具类就是用JDBC写的,用来获取数据库连接、关闭资源,DAO层的增删改查也都是靠JDBC执行SQL语句完成的。 -
JDBC的执行流程是什么?
答:加载驱动 → 获取连接 → 创建Statement对象 → 执行SQL → 处理结果集(查询时) → 关闭资源。 -
为什么要用
PreparedStatement而不是Statement?
答:PreparedStatement用?占位符预编译SQL,能防止SQL注入,更安全,而且可以重复使用,效率更高。 -
什么是CRUD?你项目里实现了哪些?
答:CRUD就是增删改查,我项目里实现了图书的新增、查询所有、按id查询、修改、删除这几个操作。
