zoukankan      html  css  js  c++  java
  • Java第八次作业

    《Java技术》第八次作业

    (一)学习总结

    1.用思维导图对本周的学习内容进行总结。

    2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用PreparedStatement接口而不使用Statement,比较使用两种接口的不同之处。

    • 使用PreparedStatement执行executeUpdate()方法和executeQuery()时,数据库系统会对sql语句进行预编译处理,预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中用,它比Statement对象生成的查询速度更快,可以用“?”作为所有动态参数的占位符。例如:
        String sqlStr = "insert into student(Sno,Sname) values(?,?)"; //预编译sql语句
        PreparedStatement  pstmt = conn.prepareStatement(sqlStr);
        pstmt.setString(1,no);     //给占位符所在的变量赋值
        pstmt.setString(2,name);
        int len = pstmt.executeUpdate(); //执行语句更新
    
    
    • PreparedStatement比 Statement 更快,使用 PreparedStatement 最重要的一点好处是它拥有更佳的性能优势,SQL语句会预编译在数据库系统中。执行计划同样会被缓存起来,它允许数据库做参数化查询。使用预处理语句比普通的查询更快,因为它做的工作更少(数据库对SQL语句的分析,编译,优化已经在第一次查询前完成了)。

    3.其他需要总结的内容。

    • DAO设计模式

    客户层(Client):现在采用B/S开发架构,一般使用浏览器进行访问。
    显示层(JSP/Servlet):使用JSP/Servlet进行页面效果的显示
    业务层(BO,Business Object,业务对象):会将多个原子性的DAO操作进行组合,组合成一个完整的业务逻辑。
    数据层(DAO):提供多个原子性的DAO操作,例如:增加、修改、删除等,都属于原子性的操作。
    资源层(DataBase):主要是数据库的操作层,可以进行各种的数据存储。

    (二)实验总结

    实验内容:
    使用JDBC实现实验七的宠物商店
    完成实验内容,代码上传到码云,注意,务必将创建数据库的脚本文件随项目文件一起上传,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。

    • 将原有的database库删除,创建新的db包,用来连接数据库,修改service方法,把sql作为查询修改添加的条件。
    • 实验问题分析:
      问题1:输入年龄和数量后,显示错误
      原因:text框的位置放置错误
      解决方案:改正text的位置
      问题2:出现数据库与当前文件中数据库不一致的问题,导致插入数据混乱
      解决方案:查阅百度后发现,刷新可以解决。。。。
      问题3:出现空指针异常
      原因:在使用用户购买功能的时候,无论如何是否有这个编号,都会购买成功,从而创建了一个空的宠物对象,存到用户的宠物中,所以展示价格的时候出现错误
      解决方案:先查找编号再执行购买方法(找不到则提示)
    boolean su = false;
    		String addno = addnotext.getText();
    		ArrayList<Pets> data = adminService.queryPets();
    		for(int i = 0; i < data.size();i++){
    			Pets pet = data.get(i);
    			if(pet.getNo().equals(addno)){       
    				userService.buypet(addno);
    				JOptionPane.showMessageDialog(this, "添加成功");
    				su=true;
    			}	
    		queryPet();
    		}
    		if(su==false){
    			JOptionPane.showMessageDialog(this, "没有此编号或者宠物数量不足");
    		}		
    

    (三)代码托管

    • 码云commit历史截图
  • 相关阅读:
    MSSQL的基础应用
    SQLLite的使用
    C#反射调用其它DLL的委托事件 传值
    SQLServer 取 字段名称 类型 字段描述 等
    WCF跨域 客户端无法访问
    不同的数据库数据类型映射
    用人四策
    思考集体跳槽
    C/C++/Qt 统计运行时间
    CUDA项目属性设置
  • 原文地址:https://www.cnblogs.com/cheng666/p/6869885.html
Copyright © 2011-2022 走看看