• 《Java技术》第八次作业


    Java第八次作业


    一 . 学习总结

    1.XMind

    2.在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,使用PreparedStatement接口而不使用Statement的原因

    • Statement接口
    • 一个Statement对象用于执行静态SQL语句,并获得语句执行后的结果
    • executeUpdate(String sql)方法执行数据库的SQL语句,如INSERT,UPDATE,DELETE等,返回更新记录数
    • executeQuery(String sql)方法执行数据库查询操作,返回一个结果集对象
    • PreparedStatement接口
    • 创建一个可以编译的SQL语句对象,该对象可以被多次运行,以提高执行效率,该接口是Statement类的子接口,属于预处理操作,与Statement接口不同的是,PreparedStatement接口操作时,在数据表中准备好SQL语句,内容暂时不设置,等待用户分别设置,PreparedStatement接口除Statement的所有操作,还有新操作
    • executeUpdate()方法执行设置的预处理SQL语句
    • executeQuery()方法执行数据库查询操作,返回ResultSet
    • 使用Statement接口(进行查询时,SQL语句的内容是具体的)
    • 实例:
            public boolean queryAllData(String name, String password) {
    	        Connection conn = null;
    	        Statement stmt = null;
    	        ResultSet rs = null;
    	        boolean flag = false;
    	        ArrayList<LoginCheck> list = new ArrayList<LoginCheck>();
    	        try {
    		        conn = JDBCUtils.getConnectionSQL();
    		        stmt = conn.createStatement();
    		        String sql = "select name,password from uers where name = 'lcy' and password = '123456'";
    		        rs = stmt.executeQuery(sql);
    		        while (rs.next()) {
    			        LoginCheck thisUser = new LoginCheck();
    			        thisUser.setName(rs.getString("name"));
    			        thisUser.setPassword(rs.getString("password"));
    			        list.add(thisUser);
    			        if (name.equals(thisUser.getName())
    					&& password.equals(thisUser.getPassword())) {
    				        flag = true;
    			        }
    		        }
    	        } catch (Exception e) {
    		            e.printStackTrace();
    	        } finally {
    		        JDBCUtils.close(conn);
    	        }
    	        return flag;
            }
    
    • 使用PreparedStatement接口(进行查询时,SQL语句使用占位符进行设置具体内容)
    > * 实例:
    	    
            person.add(new LoginCheck(name, password1, phone, email));
    		Connection conn = null;
    		PreparedStatement pstmt = null;
    		try {
    			conn = JDBCUtils.getConnectionSQL();
    			String sql = "insert into uers (name,password,phone,email) values (?,?,?,?)";
    			pstmt = conn.prepareStatement(sql);
    			pstmt.setString(1, name);
    			pstmt.setString(2, password1);
    			pstmt.setString(3, phone);
    			pstmt.setString(4, email);
    			int num = pstmt.executeUpdate();
    			} catch (Exception e1) {
    				e1.printStackTrace();
    			} finally {
    				JDBCUtils.close(conn);
    		}
    

    3.其他内容总结


    二 . 实验总结

    1. 宠物商店图形界面

    • 程序设计思路:

      • 首先,创建WelcomeFrame界面,进行注册或登录功能;点击注册,进入LoginFrame注册界面,进行注册,注册时,进行数据库连接,注册信息存入数据库;点击登录,判断输入的信息与数据库内容比较,若为管理员登录,进入AdFrame管理员界面,否则为UserFrame用户界面;若购买,进行数据库连接,若在用户界面购买后,信息存入数据库,点击宠物清单进入ListFrame清单界面
      • 其次创建Pet宠物类存放宠物属性,LoginCheck注册类存放注册属性,创建JDBCUtils数据库类,与数据库进行连接,注册时比较TextFiled的字符串与数据库数据,GUITools类对于界面组件显示的方法
      • 最后,AdminDao类是对管理界面的按钮组件功能进行实现,实现按钮功能时,进行数据库连接,AdService类是对AdminDao类中的方法进行判断,UserDao类是对用户界面的按钮组件功能进行实现,实现按钮功能时,进行数据库连接,UserService类是对UserDao类中的方法进行判断
    • 问题1:

      • 注册登录时出现空指针异常,conn对象无法执行
    • 原因:

      • 没有为conn赋值,执行注册或者登录时,没有连接数据库
    • 解决方案:

      • 当异常进行增删改查时,捕获异常时,为conn赋值
           conn = JDBCUtils.getConnectionSQL();
      
    • 问题2:

      • 执行带有数据库的项目时,不能正确执行
    • 原因:

      • 没有创建项目里的数据库
    • 解决方案:

      • 打开项目的.sql文件,先创建数据库,再创建表,添加数据等操作,再执行项目的Main方法
    • 类图:


    三 .代码托管


    四 .学习进度条

    进程 代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
    目标 5000行 300小时
    第2-4周 500/500 45/45 自学了前四章的内容,自己练习了学习过程中的所有代码,并写了一些练习题提交到了码云中
    第5周 200/700 15/55 学习了老师要求的内容
    第6周 300/1000 15/70 学习了作业中要求的内容
    第7-8周 200/1200 15/85 掌握了本次学习的全部内容
    第9周 300/1500 10/95 掌握了本次学习的内容
    第10周 400/1900 10/95 掌握了本次学习的内容
    第11周 600/2500 20/95 对图形界面有了一定的理解
    第12周 500/3000 20/115 对Java数据库编程有了深入的理解

  • 相关阅读:
    day3
    day2
    day1-存储
    day5-iptables
    MySQL之补充
    11.18
    11.17
    junit基础学习之-测试controller层(2)
    junit基础学习之-简介(1)
    外键和级联
  • 原文地址:https://www.cnblogs.com/Melody-529/p/6858783.html
Copyright © 2020-2023  润新知