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步出错,如果继续执行下一步,则无法把借书者的信息录入系统。因此要用事务处理,第三步出错就滚回第一步重新执行。