1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容。
2. 使用数据库技术改造你的系统
2.1 简述如何使用数据库技术改造你的系统。要建立什么表?截图你的表设计。
分析: 建立了user表,stackroom表,library表。
-
user表:用于存储用户信息,其中library字段使用文本类型存储对应用户的图书馆名,起到标记作用。
-
stackroom表:用于存储图书馆的所有藏书。
-
library表:用于存储用户的图书信息。
2.2 系统中使用到了JDBC中什么关键类?
分析: 主要是 PreparedStatement,Connection,ResultSet,Statement。
2.3 截图数据库相关模块的关键代码。关键行需要加注释。
2.4 选做:使用JDBCUtil进行改造系统。
3. 代码量统计
3.1 统计本周完成的代码量
- 需要将每周的代码统计情况融合到一张表中。
周次 | 总代码量 | 新增文件代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
1 | 665 | 20 | 20 | 20 |
2 | 1705 | 23 | 23 | 23 |
3 | 1834 | 30 | 30 | 30 |
4 | 1073 | 1073 | 17 | 17 |
5 | 1073 | 1073 | 17 | 17 |
6 | 2207 | 1134 | 44 | 27 |
7 | 3292 | 1085 | 59 | 15 |
8 | 3505 | 213 | 62 | 3 |
9 | 8043 | 1246 | 153 | 16 |
10 | 8606 | 543 | 167 | 14 |
11 | 9203 | 597 | 191 | 24 |
12 | 9203 | 0 | 191 | 0 |
13 | 11850 | 2647 | 233 | 42 |
14 | 11850 | 0 | 233 | 0 |
15 | 13324 | 1474 | 257 | 20 |
选做:4. 数据库学习指导
1. MySQL数据库基本操作
- 建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
在自己建立的数据库上执行常见SQL语句(自己完成,不必截图)
2. 使用JDBC连接数据库与Statement
2.1 使用Statement操作数据库。完成实验任务书-题目2。截图其中的public static void displayAll()与public static int insert(Student stu)的关键代码并出现自己的学号。
2.2 如果要完成根据指定姓名查询学生数据,即完成函数public Student findStuByName(String name),其中的sql语句怎么写?
2.3 你认为使用JDBC操作数据库的套路是什么?
分析:
* 连接数据库:注册Driver操作对象,取得Connection操作对象。
* 执行SQL语句:创建具体的SQL命令,取得SQL描述对象Statement执行SQL命令
- 接收结果:使用ResultSet对象接收结果
* 资源释放:ResultSet->Statement->Connection
3. PreparedStatement与参数化查询
3.1 使用PreparedStatement,编写public Student findStuByName(String name),实现根据name进行查找, 。(粘贴关键代码及运行截图,运行截图中需出现学号,比较2.2,说明两种实现的不同)
分析:两题使用了相同的方式。相较于Statement,PreparedStatement会更灵活,便于对动态数据进行处理。
3.2 如果要实现模糊查找,怎么修改?比如编写public List findStusByName(String name),可根据name进行模糊匹配,如将姓名中包含zhang的同学都找出来。
4. 批量更新测试
- 数据库课程上,需要测试索引对查找的加速作用。然而在几百或几千的数据量上进行操作无法直观地体验到索引的加速作用。现希望编写一个程序,批量插入10万条数据,且该数据中的某些字段的内容可以随机生成。
4.1 截图你的代码(出现学号)、统计运行时间(使用JUint4测试,需要出现时间对比截图)。
4.2 选做:计算插入的速度到底有多快?(以条/秒或MB/秒两种方式计算)。并测试你电脑上磁盘的磁盘读写性能,然后进行对比。
5. JDBCUtil与DAO
5.1 完成试验任务-题目5中的第4小点,即编写StudentDao接口及其实现类StudentDaoJDBCImpl。
5.2 使用DAO模式访问数据库有什么好处?请使用4.1的代码说明,需对比传统的模式与使用DAO模式访问数据库的代码。
分析: 提高代码的复用性:每次连接数据库,获得Connection........;提高封装性:不必关心一些功能的具体实现,只需知道功能是什么;便于拓展和维护。
5.3 使用JDBCUtil改造题目3.1。
说明: 3.1已经使用了JDBCUtil此处不赘述。
6. 事务处理
6.1 使用代码与运行结果证明你确实实现了事务处理功能,并说明事务处理时在编码时需要注意哪些?注意:要比较运行成功与运行失败两种情况下对数据库的更改情况。(粘贴一段你认为比较有价值的代码,出现学号)
执行成功
执行失败
6.2 你觉得什么时候需要使用事务处理?
分析: 先进行操作产生的结果对后需操作有影响。