201521123117 《Java程序设计》第14周学习总结 1. 本周学习总结 2. 书面作业 3. 码云

1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容。

201521123117 《Java程序设计》第14周学习总结
1. 本周学习总结
2. 书面作业
3. 码云

2. 书面作业

1. MySQL数据库基本操作

建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
在自己建立的数据库上执行常见SQL语句(截图)
201521123117 《Java程序设计》第14周学习总结
1. 本周学习总结
2. 书面作业
3. 码云

201521123117 《Java程序设计》第14周学习总结
1. 本周学习总结
2. 书面作业
3. 码云

2. 使用JDBC连接数据库与Statement

2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)

//201521123117
try {
            conn = DriverManager.getConnection(URL,userName,password);
            Statement statement = conn.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);
            
            while(resultSet.next()){
                int id = resultSet.getInt("id");
                String stuno = resultSet.getString("stuno");
                String name =resultSet.getString("name");
                int age =resultSet.getInt("age");
                Date date = resultSet.getDate("birthdate");
                System.out.print("+date);
            }
            
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            if(conn!=null)
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            conn = null;
        }

2.2 使用JDBC操作数据库主要包含哪几个步骤?

(1)装载驱动;
(2)创建数据库并连接(Connection);
(3)通过连接想数据库发送SQL语句(Statement);
(4)获得结果集(ResultSet);
(5)处理结果;
(6)关闭连接,释放资源。

-参考:实验任务书-题目2

3. PreparedStatement与参数化查询

3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)

int row = 0;
            //根据参数更新数据
            String strSql = "update students set name = ? where Id = ?";
            pStatement = con.prepareStatement(strSql);
            pStatement.setString(1, "li");
            pStatement.setInt(2, 2);
            row = pStatement.executeUpdate();
            System.out.println("成功更新了"+row+"行数据!");
            pStatement.close();//立即释放资源
 String strSql = "select * from students where name = ?";
            pStatement = con.prepareStatement(strSql);
            pStatement.setString(1, "李心宇");
            rs = pStatement.executeQuery();
            System.out.println("id	学号 		姓名	年龄	出生年月日");
            while(rs.next()){
                
                //通过列名取数据
                System.out.print(rs.getInt("id")+"	");
                System.out.print(rs.getString("stuno")+"	");
                System.out.print(rs.getString("name")+"	");
                System.out.print(rs.getInt("age")+"	");
                System.out.print(rs.getDate("birthdate"));
                System.out.println();
                
            }
            pStatement.close();//立即释放资源           

3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。对比普通方法插入与使用executeBatch方法所消耗的时间。(使用JUint4测试,需要出现时间对比截图)

普通方法insert():

//201521123117          
for(int i=0;i<1000;i++){
    String strSql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)";
    pStatement = con.prepareStatement(strSql);
    pStatement.setString(1, "201521123117");
    pStatement.setString(2, "li");
    pStatement.setInt(3, 20);
    pStatement.setString(4, "1997-09-11");
}

executeBatch方法:

//201521123117          
for(int i=0;i<1000;i++){
    String strSql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)";
    pStatement = con.prepareStatement(strSql);
    pStatement.setString(1, "201521123117");
    pStatement.setString(2, "li");
    pStatement.setInt(3, 20);
    pStatement.setString(4, "1997-09-11");
    pStatement.addBatch();//添加到同一个批处理中
}
pStatement.executeUpdate();
pStatement.close();//立即释放资源

时间对比截图:
201521123117 《Java程序设计》第14周学习总结
1. 本周学习总结
2. 书面作业
3. 码云

参考:实验任务书-题目3

4. JDBCUtil与DAO

4.1 粘贴一段你认为比较有价值的代码,并说明为什么要摘取这段代码。出现学号

//201521123117
@Override
    public List<Student> findAll() {
        // TODO Auto-generated method stub
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;
        Student stu=null;
        List<Student> students=new ArrayList<Student>();
        String sql = "select * from student";
        try {
            conn = JDBCUtil.getConnection();
            stat = conn.createStatement();
            rs = stat.executeQuery(sql);
            while(rs.next()){
                stu=new Student(rs.getInt("id"),rs.getString("name"));
                students.add(stu);
            }
        }catch (SQLException sqle) {
            sqle.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            JDBCUtil.realeaseAll(rs,stat, conn);
        }
        return students;
    }

4.2 使用DAO模式访问数据库有什么好处?

DAO模式的使用相当于建立一个接口,接口中有我们所需要的方法。在程序中,当需要和数据进行交互的时候则使用这个接口,并且编写一个实现类来实现这个接口上的方法,可以很清晰的知道interface DAO接口的类有什么功能,代码之间的关系清晰。而且之后我们需要对程序的修改的话,只需对DAO模式中的某个方法修改即可,不需要整个项目都进行修改,修改范围变小,工作量减少。

参考:实验任务书-题目5

5. 使用数据库改造购物车系统

5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。

201521123117 《Java程序设计》第14周学习总结
1. 本周学习总结
2. 书面作业
3. 码云

201521123117 《Java程序设计》第14周学习总结
1. 本周学习总结
2. 书面作业
3. 码云

5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?

(1)在数据读取时,使用文件速度比较慢,而使用数据库时读取速度更快,效率更高些;
(2)使用数据库时需要设置密码,这就限制了访问数据库的对象,相对于使用文件,安全性更高,内容泄露的可能性低;
(3)使用文件时需要打开文件,存放数据再关闭文件,而使用数据库只需输入相应的命令即可实现。

3. 码云

3.1. 码云代码提交记录