201521123119《Java程序设计》第14周学习总结

0. 本周课程设计发布

Java课程设计

1. 本周学习总结

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

2. 书面作业

Q1. MySQL数据库基本操作
建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
在自己建立的数据库上执行常见SQL语句(截图)




Q2. 使用JDBC连接数据库与Statement
Q2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)

Q2.2 使用JDBC操作数据库主要包含哪几个步骤?
1.加载数据库所需驱动到JVM;2.提供JDBC所连接的URL;3.创建连接;4.创建Statement实例;5.向数据库发送SQL语句,执行sql语句;6.关闭JDBC对象。

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

            //201521123119
            strSql = "select * from students where Id < ?";
            pStatement = con.prepareStatement(strSql);
            pStatement.setInt(1, 10);
            rs = pStatement.executeQuery();
            strSql = "select * from students";
            rs = pStatement.executeQuery(strSql);

Q3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch)

public void addByPst()
{   //201521123119
    String sql= "insert into lin (Name,ID) values(?,?)";
    try{
        pst=conn.prepareStatement(sql);
        long btime=System.currentTimeMillis();
        for(int i=0;i<1000;i++)
        {
            pst.setString(1,"lin");
            pst.setString(2,"100");
            int n=pst.executeUpdate();
        }
        long atime=System.currentTimeMillis();
        System.out.println(atime-btime+"ms");
        pst.close();
    }catch (Exception e)
}

Q4. JDBCUtil与DAO
Q4.1 粘贴一段你认为比较有价值的代码,出现学号

package threadTest;
//201521123119
class StudentDao
{

    public Connection conn = null;
    public Statement statement = null;
    public PreparedStatement pst=null;
    public ResultSet rs=null;
    private static String querySql ="select * from lin";

    public StudentDao() {
        try {
            Driver driver = new com.mysql.cj.jdbc.Driver();
            DriverManager.registerDriver(driver);
            String url = "jdbc:mysql://localhost:3306/student?serverTimezone=UTC&useSSL=false";
            String user = "root";
            String password = "123456";
            conn = DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public boolean add(Student stu)
    {
        boolean flag=true;
        String sql= "insert into lin (Name,ID) values(?,?)";
        try{
            pst=conn.prepareStatement(sql);
            pst.setString(1,stu.name);
            pst.setInt(2,stu.id);
            int i=pst.executeUpdate();
            if(i==0){
                flag=false;
            }

        }catch (Exception e)
        {
            e.printStackTrace();
        }
        finally {
            try {
                pst.close();
            }catch(SQLException e) {}
        }

        return flag;
    }

    public boolean delete(Student stu)
    {
        boolean flag=true;
        String sql="delete from user where id=?";
        try{
            pst=conn.prepareStatement(sql);
            pst.setInt(1,stu.id);
            int i=pst.executeUpdate();
            if(i==0){
                flag=false;
            }
        }catch(Exception e)
        {
            e.printStackTrace();
        }
        finally {
            try {
                pst.close();
            }catch(SQLException e) {}
        }

        return flag;
    }


    public boolean update(Student stu)
    {
        boolean flag=true;
        String sql="update lin set Name=? where ID=?";
        try{
            pst=conn.prepareStatement(sql);
            pst.setString(1,stu.name);
            pst.setInt(2,stu.id);
            int i=pst.executeUpdate();
            if(i==0){
                flag=false;
            }
        }catch (Exception e)
        {
            e.printStackTrace();
        }
        finally {
            try {
                pst.close();
            }catch(SQLException e) {}
        }

        return flag;
    }


    public List<Student> findAll()
    {
        List<Student> students=new ArrayList<Student>();
        try{
            pst=conn.prepareStatement(querySql);
            rs=pst.executeQuery();
            while(rs.next())
            {
                students.add(new Student(rs.getString("Name"),rs.getInt("ID")));
            }
        }catch (Exception e)
        {
            e.printStackTrace();
        }
        finally {
            try {
                rs.close();
                pst.close();
            }catch(SQLException e) {}
        }

        return students;
    }

    public Student findById(int id)
    {
        Student stu=new Student();
        String sql="SELECT * FROM lin where id=?";

        try{
            pst=conn.prepareStatement(sql);
            pst.setInt(1,id);
            rs=pst.executeQuery();
            stu.name=rs.getString("Name");
            stu.id=rs.getInt("ID");
        }catch(Exception e)
        {
            e.printStackTrace();
        }
        finally{
            try {
                rs.close();
                pst.close();
            }catch(SQLException e) {}
        }

        return stu;

    }

    public List<Student> findByName(String name)
    {
        String sql="SELECT * FROM lin where Name like \"?%\"";
        List<Student> students=new ArrayList<Student>();
        try{
            pst=conn.prepareStatement(sql);
            pst.setString(1,name);
            rs=pst.executeQuery();
            while(rs.next())
            {
                students.add(new Student(rs.getString("Name"),rs.getInt("ID")));
            }
        }catch (Exception e)
        {
            e.printStackTrace();
        }
        finally {
            try{
                rs.close();
                pst.close();
            }catch (SQLException e){}
        }

        return students;
    }
}

Q4.2 使用DAO模式访问数据库有什么好处?
使用DAO模式可以避免频繁的写连接数据库的操作语句,减少代码量和工作量。

Q5. 使用数据库改造购物车系统
Q5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。
...
Q5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
数据库管理较为方便,读取速度快且容量极大,还可以自己设置密码,较为安全。

Q选做:6. 批量更新测试
数据库课程上,需要测试索引对查找的加速作用。然而在几百或几千的数据量上进行操作无法直观地体验到索引的加速作用。现希望编写一个程序,批量插入1000万条数据,且该数据中的某些字段的内容可以随机生成。
Q6.1 截图你的代码(出现学号)、统计运行时间
Q6.2 计算插入的速度到底有多快?(以条/秒、KB/秒两种方式计算)

Q选做:7. 事务处理
Q7.1 使用代码与运行结果证明你确实实现了事务处理功能。(粘贴一段你认为比较有价值的代码,出现学号)
Q7.2 你觉得什么时候需要使用事务处理?

Q选做 8. 数据库连接池
使用数据库连接池改写题目5

3. 码云

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

4.课外阅读

4.1 JDBC(TM) Database Access

4.2 代码结构中Dao,Service,Controller,Util,Model是什么意思,为什么划分

4.3 mysq数据库管理工具navicat基本使用方法

posted on 2017-05-28 19:43  你的牌打得太好辣  阅读(213)  评论(1)    收藏  举报

导航