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周学习总结的更多相关文章

  1. 2018面向对象程序设计(Java)第14周学习指导及要求

    2018面向对象程序设计(Java)第14周学习指导及要求(2018.11.29-2018.12.2)   学习目标 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及 ...

  2. 面向对象程序设计(JAVA) 第14周学习指导及要求

    2019面向对象程序设计(Java)第14周学习指导及要求 (2019.11.29-2019.12.2)   学习目标 (1)掌握GUI布局管理器用法: (2)掌握Java Swing文本输入组件用途 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 201521123038 《Java程序设计》 第九周学习总结

    201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...

  6. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  7. 20175221 2018-2019-2 《Java程序设计》第一周学习总结

    20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...

  8. 20175314 《Java程序设计》第九周学习总结

    20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...

  9. 20175314 《Java程序设计》第二周学习总结

    20175314 <Java程序设计>第二周学习总结 教材学习内容总结 我在APPstore上发现了一个可以支持我们在IOS系统上学习实践Java程序的开发环境,只需要购买专业版就可以使用 ...

  10. 20155312 2016-2017-2 《Java程序设计》第九周学习总结

    20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...

随机推荐

  1. 设计模式之建造者模式Builder(创建型)

    1. 概述 在软件开发的过程中,当遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定 ...

  2. 剑指OFFER——合并两个有序的链表

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 再做这道题就是想不起来书上怎么做的了,但是最近看STL里面全是这种基础的合并啊,比较啊.就算不会也看会了. ...

  3. BZOJ 3028 食物 生成函数

    Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数.他这 ...

  4. virtual与static

    virtual与static不能同时作用于一个函数.根据面向对象的理论,virtual的成员函数是可以变子类覆盖的,是实现多态的重要手段.而static作用的成员函数表示该函数仅属于某个类. 下面是实 ...

  5. 【问题解决记录】Error: Cannot find module '@ionic/app-scripts'

    主要问题为: ionic serve 编译在浏览器中预览项目时,提示报错 Error: Cannot find module '@ionic/app-scripts'.这个问题的主要现象就是创建的项目 ...

  6. lumen的自定义依赖注入

    比如我现在有个token认证系统,目前我用mysql的token表实现,将来有可能会改成redis,怎么实现未来的无缝连接呢. 先定义一个合约文件app/Contracts/TokenHandler. ...

  7. tensorflow笔记(四)之MNIST手写识别系列一

    tensorflow笔记(四)之MNIST手写识别系列一 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7436310.html ...

  8. 【Git】自动化Maven项目构建脚本(一)

    在公司服务器上搭了个自动化构建环境,一上午写了个构建脚本,现在贴出来给自己看 #!/bin/bash # .配置路径变量 propath=/home/hotspot/.autoBuild/projec ...

  9. 【Spring 核心】AOP 面向切面编程

    一.什么是面向切面编程? 二.通过切点来选择连接点 三.使用注解创建切面 四.在XML中声明切面 五.注入AspectJ切面

  10. i++,++i 作为参数

    C++11Prime里说过不同的编译器读取参数的方向不同,有的从左到右,有的从右到左. 我在想他说的是不是指,32位系统通过栈把参数压入,所以从右到左,而64位前6个是寄存器存取,所以从左到右. 还是 ...