201521123076 《Java程序设计》 第十四周学习总结
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容。
2. 书面作业
1. MySQL数据库基本操作
建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
在自己建立的数据库上执行常见SQL语句(截图)
mysql> describe students;
+-----------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| stuno | char(10) | NO | | NULL | |
| name | char(20) | NO | | NULL | |
| gender | char(1) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| birthdate | date | YES | | NULL | |
| major | char(20) | YES | | NULL | |
+-----------+----------+------+-----+---------+----------------+
7 rows in set (0.07 sec)
mysql> select * from students;
+----+------------+------+--------+------+-----------+-------+
| id | stuno | name | gender | age | birthdate | major |
+----+------------+------+--------+------+-----------+-------+
| 1 | 2015211230 | ding | m | NULL | NULL | NULL |
| 2 | 24 | ding | m | NULL | NULL | NULL |
+----+------------+------+--------+------+-----------+-------+
2 rows in set (0.00 sec)
and so on...
-参考:实验任务书-题目1
2. 使用JDBC连接数据库与Statement
2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)
2.2 使用JDBC操作数据库主要包含哪几个步骤?
1.设置好连接数据库所需的参数
2.创建连接数据库
3.发送sql语句
4.获取结果集
5.处理数据
6.释放资源
-参考:实验任务书-题目2
3. PreparedStatement与参数化查询
3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)
strSql = "select * from students where name = ?";
pStatement = con.prepareStatement(strSql);
pStatement.setString(1, "Daiker1");
rs = pStatement.executeQuery();
System.out.println("根据条件查询到的学生:");
while(rs.next()){
System.out.print(rs.getInt("id")+"\t");
System.out.print(rs.getString("stuno")+"\t");
System.out.print(rs.getString("name")+"\t");
System.out.print(rs.getString("gender")+"\t");
System.out.println();
}
3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch)
long begin = System.currentTimeMillis();
String strSql = "insert into students(stuno,name,gender) values(?,?,?)";
con.setAutoCommit(false);
for(int i = 0; i< 1000;i++){
pStatement = con.prepareStatement(strSql);
pStatement.setString(1, "2015076");
pStatement.setString(2, "Daiker0");
pStatement.setString(3, "m");
pStatement.addBatch();
pStatement.executeBatch();
}
con.commit();
pStatement.close();//立即释放资源}
long end = System.currentTimeMillis();
System.out.println("last "+(end-begin)+ "ms");
System.out.println("write 1000 Students done");
参考:实验任务书-题目3
4. JDBCUtil与DAO
4.1 粘贴一段你认为比较有价值的代码,出现学号
//201521123076
public boolean writeUser(User user) {
Connection conn = null;
PreparedStatement pstat = null;
String sql = "insert into Users(number,username,password) values(?,?,?) ";
int result = -1;
try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setInt(1, user.getNumber());
pstat.setString(2, user.getUsername());
pstat.setString(3, user.getPassword());
result = pstat.executeUpdate();
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(null,pstat, conn);
}
return result>0?true:false;
}
public boolean modifyPassword(User user) {
Connection conn = null;
PreparedStatement pstat = null;
String sql = "UPDATE Users SET password = ? WHERE number = ?";
int result = -1;
try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setString(1, user.getPassword());
pstat.setInt(2, user.getNumber());
result = pstat.executeUpdate();
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(null,pstat, conn);
}
return result>0?true:false;
}
4.2 使用DAO模式访问数据库有什么好处?
使用DAO模式集成各种操作,将其封装成一个工具类,提供访问接口,方便用户调用。且这样的结构便于管理。
参考:实验任务书-题目5
5. 使用数据库改造购物车系统
5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。
//开始为之后的课设设计初始模型(正式课设的时候完整体现)
public interface ServerUserDao {
public boolean writeUser(User user);
public User readUser(String name);
public boolean createFile(User user);
public boolean modifyUsername(User user);
public boolean modifyPassword(User user);
public boolean checkUser(User user);
public User loadUser(int number);
}
5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
- 使数据结构化,让人一目了然;
- "数据库+表"结构体系,层次分明,对数据进行操作的时候效率更高;
选做:6. 批量更新测试
数据库课程上,需要测试索引对查找的加速作用。然而在几百或几千的数据量上进行操作无法直观地体验到索引的加速作用。现希望编写一个程序,批量插入1000万条数据,且该数据中的某些字段的内容可以随机生成。
6.1 截图你的代码(出现学号)、统计运行时间
6.2 计算插入的速度到底有多快?(以条/秒、KB/秒两种方式计算)
1000000 / 13.6 = 73529(条/秒)
1000000 * 4 / (13.6 * 1000) = 294.12(KB/秒)