1. JDBC_简介
(1) 什么是JDBC?
![2ef546464159116e567ad19cecd0fd1b.png](https://i-blog.csdnimg.cn/blog_migrate/4fe10545d34c02abf4a404fddec153c0.jpeg)
(2) JDBC操作中涉及到的接口和类主要有哪些? 分别有什么作用?
![696f7e440db2ceac4fea951cc33e4dfc.png](https://i-blog.csdnimg.cn/blog_migrate/00bf13f673d4daeb0345aed95f50a294.jpeg)
![82b421316218d5bacbdea7f59467c17e.png](https://i-blog.csdnimg.cn/blog_migrate/e3d4e2f232e823fd74c6bb1ddcd6e09e.jpeg)
![d4bf37bedb17473ac98f798538dd48b1.png](https://i-blog.csdnimg.cn/blog_migrate/f32154153aad15423e1db84c096853b9.jpeg)
![c01ed47023f31ac3e657434e67a8866e.png](https://i-blog.csdnimg.cn/blog_migrate/0f75cd3795452110d06eb6a6ed840fe0.jpeg)
![fd8dc1468053c6339ee1f59c57dcd0a2.png](https://i-blog.csdnimg.cn/blog_migrate/9e97585a10a495118753e9c042133cd5.jpeg)
![499195726e8ef8027f8a910080c984f1.png](https://i-blog.csdnimg.cn/blog_migrate/72a3aeac626832623c5731523b256177.jpeg)
![d765835edd3e76dce1ccf54fc97bea70.png](https://i-blog.csdnimg.cn/blog_migrate/1072f5fb24e4af6e559dabef4d2fbd9e.jpeg)
2. JDBC_连接步骤_驱动类加载_建立Connection
(1) 简述使用JDBC连接数据库的步骤有哪些?
![815f4c455655427c0b0d2a1d49f1bc0e.png](https://i-blog.csdnimg.cn/blog_migrate/7f090e226445ebfa1f6d2fe87f264437.png)
(2) 简述Class.forName()的作用?
通过反射机制将数据库驱动实例化。
3. JDBC_Statement发送器_ResultSet处理_完成查询操作
(1) JDBC中, Statement起什么作用? 如何得到Statement对象?
发送sql语句。通过Connection对象调用createStatement();
(2) 什么是ResultSet? ResultSet中有哪些方法?
结果集,用于存储查询的结果的指针;
.next();返回一个布尔值
.gerInt(列名);获取一列的信息
.getString(列名);获取一列的信息
(3) 请写出JDBC中ResultSet的遍历,并说出开始和最后的时候指针指向什么位置?
最开始指针是在第一行之前,通过while(对象.next())进行迭代,如果有数据则调用getXXX(int fieldIndex)/getXXX(String columnName)方法获取字段值。
没有则返回flase。
4. JDBC_异常处理_关闭资源
(1) JDBC操作中, 可能会碰到哪些异常?
![2767c178301c5d4a72a1620678d3ff2f.png](https://i-blog.csdnimg.cn/blog_migrate/bc719a2012d464462bd3fb3a53ff6d84.jpeg)
(2) JDBC操作完成后, 需要关闭哪些资源? 顺序是什么?
先关闭ResultSet然后是Statement,最后Connection。
(3) 在JDBC编程时为什么要养成经常释放资源的习惯?
节约资源,减少不必要的消耗,为以后多次使用铺垫。
5. JDBC_执行DML操作
(1) 执行DML操作时使用JDBC中的哪个方法?
添加和删除都是executeUpdate(sql);查询是用excuteQuery(sql);
(2) executeUpdate方法的返回结果什么类型, 代表什么含义?
![e74a6e330fc45e5f09ec7226dd2afab7.png](https://i-blog.csdnimg.cn/blog_migrate/68ce707ce220a98e8f08c96fc6791d8c.png)
6. JDBC_事务管理
(1) 事务处理有哪些步骤?列出相应的关键代码.
关闭自动事务处理,使用.commit()和.rollback()手动对代码进行事务处理。
7. JDBC_了解登录流程_封装工具类DBUtil
(1) 简述登录功能的实现流程.
(2) 如何封装JDBC工具类?
将代码重复的部分用方法来代替,如创建Connection对象,和资源关闭。
8. JDBC_使用DBUtil_登录练习
(1) 使用DBUtil实现用户注册功能.
9. JDBC_SQL注入_PreparedStatement的使用
(1) 简述你对Statement和PreparedStatement的理解
当我们使用java程序来操作sql server时会使用到Statement和PreparedStatement,俩者都可以用于把sql语句从java程序中发送到指定数据库,并执行sql语句
(2) 什么是SQL注入, 如何避免SQL注入?
PreparedStatement还能有效的防止危险字符的注入,也就是sql注入的问题。
10. JDBC_DBUtil封装PreparedStatement
(1) PreparedStatement相比Statement有什么好处?
![5f1d9f30bd1c5b0d63c880bb3362581a.png](https://i-blog.csdnimg.cn/blog_migrate/5570246730a5dc30acdf3d6d7212bc85.jpeg)
(2) 如何封装PreparedStatement?
11. JDBC_使用Properties优化DBUtil
(1) 什么是Properties? 有什么特点?
存储驱动、URL、用户名、密码的文件,后期只需要修改配置文件就可以,不用修改代码。
(2) java中如何读取Properties中的数据?
使用ResourceBundle来获取相关数据。
![6baf0b37277b7a25090f265776352bf2.png](https://i-blog.csdnimg.cn/blog_migrate/5339d4b934eeeaf1c2c2a7d28f491110.jpeg)
12. JDBC_使用Statement插入大量数据
(1) 使用jdbc连接数据库时, 有什么注意事项?
1、jdbc.properties里面的value字段没有引号
2、加载驱动的时候,获取资源包名字的时候,路径不要写错,路径是以src为相对路径的
3、实例化JDBCUtil的时候不能赋初值null否则会报空指针
4、还有一个地方需要注意的是在向结果集中取数据的时候,每取出一行数据,然后就要封装为一个对象,然后紧接着就应该将封装好的对象加入到对象集中去
而不是等到while循环遍历完了,再将最后一个对象加入到结果集中
(2) 当写入大量数据时, JDBC操作要注意什么?
首先大量插入数据肯定是需要插入数组的,所以我们定义一个方法形参为数组
![7b75fbd23fc785b4ded3998d9083f3ef.png](https://i-blog.csdnimg.cn/blog_migrate/f8b11ed05cbe1575d7749b42acf46546.png)
然后是通用操作,创建Connection对象,通过Connection对象的方法创建PreparedStatement对象并定义sql语句,创建for循环,为每一个Department对象赋值,进行批量处理,最后调用executeBatch()方法对数据库进行操作
![916c89b0663791392d5987531f0fa333.png](https://i-blog.csdnimg.cn/blog_migrate/9c887d39f6d076613faf25ef1419bb5e.jpeg)
。