![cd46a03ddb751dc8557c47642ece6f03.png](https://i-blog.csdnimg.cn/blog_migrate/faad42ce7631072f8431f8b6e8618b53.jpeg)
JDBC
1. JDBC_简介
(1) 什么是JDBC?
答:JDBC(Java DataBase Connectivity) java数据库连接
是JavaEE平台下的技术规范
定义了在Java语言中连接数据库,执行SQL语句的标准
可以为多钟关系数据库提供统一访问
(2) JDBC操作中涉及到的接口和类主要有哪些? 分别有什么作用?
答:1、Driver 接口
Driver 接口的作用是来定义数据库驱动对象应该具备的一些能力。
2、DriverManager 类
DriverManager 通过实例化的数据库驱动对象,能够建立应用程序与数据库之间建立连
接。并返回 Connection 接口类型的数据库连接对象。
3 Connection 接口
Connection 与数据库的连接(会话)对象。我们可以通过该对象执行 sql 语句并返回结果。
4 Statement 接口
用于执行静态 SQL 语句并返回它所生成结果的对象。
5 PreparedStatement 接口
继承自 Statement 接口,由 preparedStatement 创建,用于发送含有一个或多个参数的 SQL语句。
6 ResultSet 接口
ResultSet 提供检索不同类型字段的方法。
7 CallableStatement 接口
继承自 PreparedStatement 接口,由方法 prepareCall 创建,用于调用数据库的存储过程。
2. JDBC_连接步骤_驱动类加载_建立Connection
(1) 简述使用JDBC连接数据库的步骤有哪些?
答:加载数据库驱动程序 → 建立数据库连接 Connection → 创建执行 SQL 的语句
Statement → 处理执行结果 ResultSet → 释放资源
(2) 简述Class.forName()的作用?
答:通过JDK的反射机制,可以加载数据库驱动类,将其实例化。
3. JDBC_Statement发送器_ResultSet处理_完成查询操作
(1) JDBC中, Statement起什么作用? 如何得到Statement对象?
答:用于执行静态 SQL 语句并返回它所生成结果的对象。
由 createStatement 创建,用于发送简单的 SQL 语句(不支持动态绑定)。
(2) 什么是ResultSet? ResultSet中有哪些方法?
答:ResultSet 提供检索不同类型字段的方法
![954c323d65bd4356f4024a4f311a0382.png](https://i-blog.csdnimg.cn/blog_migrate/c40e8cc54a58d9feb67857d83e1a0a2f.jpeg)
![dd9870aa83b0d13ef41000468b724926.png](https://i-blog.csdnimg.cn/blog_migrate/a2d344e06e10db0e5aa0b0f51a25194e.jpeg)
(3) 请写出JDBC中ResultSet的遍历,并说出开始和最后的时候指针指向什么位置?
答:开始指针是指向0的位置,最后是指向currentPage * pageRows的位置(currentPage代表当前页,pageRows代表显示的行数)
4. JDBC_异常处理_关闭资源
(1) JDBC操作中, 可能会碰到哪些异常?
答:ClassNotFoundException
Java.sql.SQLException
NonePointerException
(2) JDBC操作完成后, 需要关闭哪些资源? 顺序是什么?
答:关闭Statement、Connection、ResultSet对象,
顺序依次关闭Statement,Connection,ResultSet对象
(3) 在JDBC编程时为什么要养成经常释放资源的习惯?
答:因为不释放资源的话,那么那些闲置的对象会一直占用系统资源,会影响性能
5. JDBC_执行DML操作
(1) 执行DML操作时使用JDBC中的哪个方法?
答:executeUpdate(String sql)
(2) executeUpdate方法的返回结果什么类型, 代表什么含义?
答:返回的是int类型,代表更新的行数。
6. JDBC_事务管理
(1) 事务处理有哪些步骤?列出相应的关键代码.
答:在 JDBC 操作中数据库事务默认为自动提交。如果事务需要修改为手动提交,那么我们需要使用 Connection 对象中的 setAutoCommit 方法来关闭事务自动提交。然后通过Connection 对象中的 commit 方法与 rollback 方法进行事务的提交与回滚。
7. JDBC_了解登录流程_封装工具类DBUtil
(1) 简述登录功能的实现流程.
1. 根据用户提供的账号查找数据库是否存在该账号。如果账号,提示用户不存在。
2. 如果账号存在则比较数据库中账号对应的密码和用户提交的密码是否相等,若不相等,提示密码错误。
若账号密码都相等,提示验证成功
1. JDBC_SQL注入_PreparedStatement的使用
(1) 简述你对Statement和PreparedStatement的理解
答:Statement 接口:用于执行静态 SQL 语句并返回它所生成结果的对象。
PreparedStatement 接口:继承自 Statement 接口,由 preparedStatement 创建,用于发送含有一个或多个参数的 SQL语句。
(2) 什么是SQL注入, 如何避免SQL注入?
答:所谓 SQL 注入,就是通过把含有 SQL 语句片段的参数插入到需要执行的 SQL 语句中,最终达到欺骗数据库服务器执行恶意操作的 SQL 命令。
不要使用Statement类,因为它没有预编译功能,而使用含义预编译功能的PrepareStatement类
2. JDBC_DBUtil封装PreparedStatement
(1) PreparedStatement相比Statement有什么好处?
答:继承自 Statement 接口,由 preparedStatement 创建,用于发送含有一个或多个参数的 SQL语句。PreparedStatement 对象比 Statement 对象的效率更高,并且可以防止 SQL 注入。
(2) 如何封装PreparedStatement?
3. JDBC_使用Properties优化DBUtil
(1) 什么是Properties? 有什么特点?
答:后缀properties是一种属性文件。这种文件以key=value格式存储内容
(2) java中如何读取Properties中的数据?
答:通过ResourceBundle类的对象中的getString方法读取
4. JDBC_使用Statement插入大量数据
(1) 使用jdbc连接数据库时, 有什么注意事项?
答:1、需要添加数据库相应的jar包。
2、jdbc.properties里面的value字段没有引号
3、加载驱动的时候,获取资源包名字的时候,路径不要写错,路径是以src为相对路径的。
(2) 当写入大量数据时, JDBC操作要注意什么?
答:为了提高效率可以进行批量处理,手动提交事务。