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

1. 本周学习总结

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

2. 书面作业

1. MySQL数据库基本操作

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

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

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

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

//201521123031
try {
    conn = DriverManager.getConnection(URL,userName,password);
    Statement statement = conn.createStatement();
    ResultSet resultSet = statement.executeQuery(sql);
    //JDBC连接数据库
    while(resultSet.next()){
        int id = resultSet.getInt("id");
        String stuno = resultSet.getString("stuno");
        String name = resultSet.getString("name");
        System.out.print("id="+id+" stuno="+stuno+" name="+name);
    }   
} catch (SQLException e) {
    e.printStackTrace();
}finally{
    if(conn!=null)
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    conn = null;
}

2.2 你认为使用JDBC操作数据库的套路是什么?有那几点需要注意。
-参考:实验任务书-题目2
答:1、加载数据库驱动
2、与数据库建立连接
3、向数据库发送SQL语句
4、执行数据库操作
5、获得返回的结果
6、关闭JDBC对象

3. PreparedStatement与参数化查询

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

//201521123031
public void searchByPst()
{
    ArrayList<Long> arr=new ArrayList<Long>();
    try{
        pst=conn.prepareStatement(querySql);
        rs=pst.executeQuery();
        while(rs.next())
        {
            arr.add(rs.getLong("ID"));
        }
        System.out.println(arr);
        this.pst.close();
    }catch (Exception e)
    {
        e.printStackTrace();
    }
}

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

4. JDBCUtil与DAO

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

//201521123031
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;
    }
}

4.2 使用DAO模式访问数据库有什么好处?
答:好处是将将操作集中于一个工具类,方便调用,并且通过写成私有方法并提供外部调用的入口,这样写安全可靠。

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

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

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

5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
答:数据库处理:读取效率很快,容量很大,适合经常更新变动的情况,不会有文件操作那么麻烦。

3. 码云

3.1. 码云代码提交记录

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

原文地址:https://www.cnblogs.com/ltykm/p/6916269.html