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历史截图
posted @ 2017-05-17 22:30  程飞飞  阅读(166)  评论(0编辑  收藏  举报