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程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...
随机推荐
- 再起航,我的学习笔记之JavaScript设计模式12(适配器模式)
适配器模式 适配器模式(Adapter): 将一个类(对象)的接口(方法或属性)转化成为另外一个接口,使类(对象)之间接口的不兼容问题通过适配器得以解决. 适配相似的框架 不知道大家有没有遇到过这种场 ...
- APUE 2 - 进程组(process group) 会话(session) job
进程组(process group) 进程组顾名思义是指一个或多个进程的集合.他们通常与同一个job(可以从同一个终端接收信号)相关联.每个进程组拥有一个唯一的Process Group Id.可以使 ...
- 转载_2016,Java成神初年
原文地址:http://blog.csdn.net/chenssy/article/details/54017826 2016,Java成神初年.. -------------- 时间2016.12. ...
- 斜率DP hdu 3507
Problem Description Zero has an old printer that doesn't work well sometimes. As it is antique, he s ...
- Python之测试webservice接口
前段时间学习了Python操作http接口,觉得挺容易的.最近项目组也有接触webservice接口,心里想想是否Python也可以操作这类接口.于是利用伟大的度娘,花了6个小时研究出来了,所以迫不及 ...
- postman接口测试工具完整教程
第一部分:基础篇 postman:4.5.11.安装postman进入postman官网,如果是mac系统可以直接点击mac app安装 如果是windows的话,需要在windows下安装chrom ...
- Sublime Text3自定义代码片段
1.打开工具--插件开发--新建代码片段 会出现下图: 2.在<![CDATA[和]]>内写下你要的代码片段,注意的是代码片段要靠最左边. 3.设置快捷键,把下面tabTrigger标签的 ...
- random模块函数分析(一)
random是python产生伪随机数的模块,随机种子默认为系统时钟.下面分析模块中的方法: 1.random.randint(start,stop): 这是一个产生整数随机数的函数,参数start代 ...
- JDK+Apache+Tomcat+MySQL配置 一起来学习吧
配置JDK1.8+Apache2.4+Tomcat8.0+mySQL5.1,网上的资料非常繁杂,花费几天时间配置成功,汇总记录. 操作系统:CentOS6.5 预先下载最新版软件: apache-to ...
- POI操作Excel的API注意点总结
本篇是关于POI.jar操作Excel的API注意事项 基数问题 说明:我使用的是POI 3.15版本的,在版本问题上建议大家,在版本稳定的基础上尽量使用高版本的 看过很多帖子在问一个问题:假设原来有 ...