201521123113《Java程序设计》第14周学习总结
1. 本周学习总结
1.1 以你喜欢的方式(思维导图、Onenote或其他)归纳总结多数据库相关内容。

JDBC体系架构:

2. 书面作业
Q1. MySQL数据库基本操作
1.1 建立数据库test、表students。然后将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)

主键列名为id(非空、自增长),其他列名根据需要自己增加
1.2 在自己建立的数据库上执行常见SQL语句(截图)

查-select

改-update

增-insert

删-delete

参考:实验任务书-题目1
Q2. 使用JDBC连接数据库与Statement
2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)

2.2 使用JDBC操作数据库主要包含哪几个步骤?
Class.forName(driverName);//装载驱动
Connection con=DriverManager.getConnection(JDBC URL,数据库用户名,密码);//与数据库建立连接
Statement stmt = con.createStatement();//向数据库发送SQL语句
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");//获得和处理查询或更新语句返回的结果
conn.close();//关闭连接,释放资源
Q3. PreparedStatement与参数化查询
3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)

3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch)


对比常规方法插入消耗时间

- 可见executeBatch效率快很多。
Q4. JDBCUtil与DAO
4.1 粘贴一段你认为比较有价值的代码,出现学号。
//201521123113
public static void registerDriver() {
try {
Class.forName(driverName);// jdbc4.0以前需要这句进行驱动注册
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("找不到驱动");
}
}
public static Connection getConnection() throws SQLException {
Connection conn = null;
System.out.println("正在连接数据库...");
conn = DriverManager.getConnection(url, userName, password);
System.out.println("数据库已连接!");
return conn;
}
public static void closeConnection(Connection conn) {
System.out.println("正在释放所有资源...");
if (conn != null) {
try {
conn.close();
conn = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void realeaseAll(ResultSet rs,Statement st,Connection conn){
if(rs!=null){
try {
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
if (st!=null){
try {
st.close();
st = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
closeConnection(conn);
}
- 对访问数据库的步骤写成方法,然后再从主函数里调用。
4.2 使用DAO模式访问数据库有什么好处?
- 使用DAO模式可以避免频繁的写连接数据库的操作语句,减少代码量和工作量。只需要把固定的JDBC编程一般步骤写成接口,在需要用时接入接口即可,使程序层次分明,方便代码编写。
参考:实验任务书-题目5
Q5. 使用数据库改造购物车系统或者学生管理系统
5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前还未完成购物车系统,可编写基于数据库的学生管理系统。该系统包含对学生的增删改查,要求使用PreparedStatement进行参数化查询。
5.2 相比较使用文件,使用数据库来存储与管理数据有何不一样?
- 数据库采用一定的数据模型实现数据结构化,方便储存,有较高的安全性,与程序独立,共享性高。
图形界面可使用JTable
Q6.选做: 批量更新测试
数据库课程上,需要测试索引对查找的加速作用。然而在几百或几千的数据量上进行操作无法直观地体验到索引的加速作用。现希望编写一个程序,批量插入1000万条数据,且该数据中的某些字段的内容可以随机生成。
6.1 截图你的代码(出现学号)、统计运行时间
代码:

运行结果

- 由于1000万条数据太大太久,所以我测试了100万条数据。
6.2 计算插入的速度到底有多快?(以条/秒、KB/秒两种方式计算)
- 1000000/4.511s = 22万条/秒
- 16.384KB/4.511s = 3.63KB/s
Q7.选做: 事务处理
7.1 使用代码与运行结果证明你确实实现了事务处理功能。(粘贴一段你认为比较有价值的代码,出现学号)



查看数据库搜索结果,发现并没有更新成功。
if (!throwFlag){
throw new SQLException("主动抛出的异常");//由于这句的原因,sql1没有执行成功,sql2就不会执行,则抛出异常。
}
7.2 你觉得什么时候需要使用事务处理?
- 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。主要用于一些对操作过程的完整性比较高的程序。
例如:
一个图书管理系统,借书步骤是:
1.系统找到书;
2.书的状态变为借出;
3.系统把借书者的信息加入系统;
4.成功借书。
如果此时第3步出错,如果继续执行下一步,则无法把借书者的信息录入系统。因此要用事务处理,第三步出错就滚回第一步重新执行。
3. 码云
3.1. 码云代码提交记录

201521123113《Java程序设计》第14周学习总结的更多相关文章
- 2018面向对象程序设计(Java)第14周学习指导及要求
2018面向对象程序设计(Java)第14周学习指导及要求(2018.11.29-2018.12.2) 学习目标 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及 ...
- 面向对象程序设计(JAVA) 第14周学习指导及要求
2019面向对象程序设计(Java)第14周学习指导及要求 (2019.11.29-2019.12.2) 学习目标 (1)掌握GUI布局管理器用法: (2)掌握Java Swing文本输入组件用途 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 201521123038 《Java程序设计》 第九周学习总结
201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20175221 2018-2019-2 《Java程序设计》第一周学习总结
20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...
- 20175314 《Java程序设计》第九周学习总结
20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...
- 20175314 《Java程序设计》第二周学习总结
20175314 <Java程序设计>第二周学习总结 教材学习内容总结 我在APPstore上发现了一个可以支持我们在IOS系统上学习实践Java程序的开发环境,只需要购买专业版就可以使用 ...
- 20155312 2016-2017-2 《Java程序设计》第九周学习总结
20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...
随机推荐
- 001-centos6.5下安装jenkins
Jenkins是开源的,使用Java编写的持续集成的工具,在Centos上可以通过yum命令行直接安装. 需要先安装Java,如果已经Java可以跳过该步骤. 如果已安装java,可以通过该命令查 ...
- 使用ant插件打包生成jar文件
1.环境 新版Eclipse中已经集成了Ant插件,在Preferences中可以看到.(2017版) 旧版本的Eclipse如果没有集成Ant插件,安装配置方法在文档最后. 2.使用教程 (1)新建 ...
- SpringMVC详解(四)------SSM三大框架整合之登录功能实现
为了后面讲解的需要,我们取数据都会从数据库中获取,所以这里先讲讲三大框架(Spring.SpringMVC.MyBatis)的整合.前面讲解 MyBatis 时,写了一篇 MyBatis 和 Spri ...
- TP-Link路由器的设置
TP-Link路由器的设置.. 路由器中TP-Link是公认比较好用的品牌. 将TP-Link路由器的Lan与电脑连接.拔掉Wan口上的线. 注:tplink的路由器默认IP基本都是192.168.1 ...
- 基于Vue实现后台系统权限控制
原文地址:http://refined-x.com/2017/08/29/基于Vue实现后台系统权限控制/,转载请注明出处. 用Vue/React这类双向绑定框架做后台系统再适合不过,后台系统相比普通 ...
- 《principles of model checking》中的离散时间马尔科夫链
<principles of model checking>中的离散时间马尔科夫链 说明:此文为我自学<principles of model checking>第十章内容的笔 ...
- python 数据驱动(ddt)
DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据) 实例代码: import ddt import unittest ...
- 如何修改int的打印内容——史上最难的JAVA面试题
序 今天看到了一个比较特别的面试题,考察的是如何改变int的System.out.print的结果.题目如下: 下面的一句话"这是初级java实习生面试题"非常挑衅的激起了大家做题 ...
- [C#] 如何截取完整的网页图片
前言 有时候浏览到非常有用的网页时,我们会选择将它加入到收藏夹中,但是网站一旦过期,以后就看不到这个网页了.当然也可以将网页打印成PDF文档保存.最新的Windows 10中的Edge浏览器支持将网页 ...
- Thread类源码剖析
目录 1.引子 2.JVM线程状态 3.Thread常用方法 4.拓展点 一.引子 说来也有些汗颜,搞了几年java,忽然发现竟然没拜读过java.lang.Thread类源码,这次特地拿出来晒一晒. ...