zoukankan      html  css  js  c++  java
  • 201521123108《Java程序设计》第14周学习总结

    1. 本周学习总结

    2. 书面作业

    Q1. MySQL数据库基本操作

    建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
    答:

    在自己建立的数据库上执行常见SQL语句(截图)
    -参考:实验任务书-题目1

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

    2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)
    答:采用maven管理项目,添加Mysql依赖。

        </dependency>
           <dependency>
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
               <version>6.0.6</version>
           </dependency>
       </dependencies>
    

    代码:

    //201521123108
    
    public DBHelper() {                       //连接数据库
        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 void searchByStm()
    {                                         //遍历输出
    
        try {
            statement=conn.createStatement();
            ResultSet rs = statement.executeQuery(querySql);
            while(rs.next())
            {
                String uname = rs.getString(1);
                String uid = rs.getString(2);
                System.out.println(uid + "	" + uname );
            }
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    
    }
    

    2.2 你认为使用JDBC操作数据库的套路是什么?有那几点需要注意。
    答:1.加载数据库所需驱动
    2.提供JDBC所连接的URL

    3.创建连接

    4.创建Statement实例

    5.执行sql语句

    6.关闭JDBC对象
    -参考:实验任务书-题目2

    Q3. PreparedStatement与参数化查询

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

    //201521123108
    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测试,需要出现时间对比截图)
    答:

    public void addByPst()
    {
        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)
        {
            e.printStackTrace();
        }
    }
    
    

    参考:实验任务书-题目3
    Q4. JDBCUtil与DAO

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

    //201521123108
    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模式访问数据库有什么好处?
    答:DAO的好处就是提供给用户的接口只有DAO的接口,所以如果用户想添加数据,只需要调用create函数即可,不需要数据库的操作。DAO使程序层次分明,逻辑清晰。如需要对程序进行修改,只需要对Dao中的某个方法进行修改,无需对整个程序进行修改,方便代码的维护。

    参考:实验任务书-题目5
    Q5. 使用数据库改造购物车系统

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

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

    5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
    答:数据库方便管理,并且读取速度快效率高,容量极大。最关键最关键的还是快这个优势,如果是简单的数据存储,那用excel就可以,但作为一些软件的后台数据管理,就必须利用数据库进行操作。

  • 相关阅读:
    Python的time模块随笔。
    生成器递归解决八皇后问题(勉强理解)
    Python历史「解密」Python底层逻辑 及Python 字节码介绍(转帖)
    可迭代(Interable),迭代器(Iterator),生成器(generator)的手记(11月26日再次修改)
    __getattr__,__setattr__,__delattr__,__getattribute__,记录
    关于property的一些记录,以及描述符(descriptor)中__get__,__set__,__delete__的属性使用。
    Python魔法方法之容器部方法(__len__,__getitem__,__setitem__,__delitem__,__missing__)(更新版本)
    Mac下PyCharm快捷键大全!(每天记住几个)
    开笔了,就写一下,hasattr,getattr,setattr。
    GUI
  • 原文地址:https://www.cnblogs.com/yytx/p/6916345.html
Copyright © 2011-2022 走看看