JAVA第八次作业
《Java技术》第八次作业
(一)学习总结
1.用思维导图对本周的学习内容进行总结。
- 参考资料: XMind
2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用PreparedStatement接口而不使用Statement,比较使用两种接口的不同之处。
-
对于需要执行动态的SQL语句经常使用PreparedStatement对象操作,以提高效率:
executeQuery()方法://获取所有数据 public ArrayList<PetItem> queryAllData(){ Connection conn = null;//数据库连接 Statement stmt = null;//数据库操作 ResultSet rs = null; ArrayList<PetItem> list = new ArrayList<PetItem>(); try{ conn = JDBCUtils.getConnection(1); stmt = conn.createStatement(); String sql = "select number,name,price,age,num from pet"; rs = stmt.executeQuery(sql); while(rs.next()){ PetItem thisPet = new PetItem(); thisPet.setNumber(rs.getString("number")); thisPet.setName(rs.getString("name")); thisPet.setPrice(rs.getDouble("price")); thisPet.setAge(rs.getString("age")); thisPet.setNum(rs.getString("num")); list.add(thisPet); } return list; }catch(Exception e ){ e.printStackTrace(); }finally{ JDBCUtils.close(conn); } return null; }
executeUpdate()方法:
//删除数据
public boolean delPetItem(String delNumber){
boolean result=false;
Connection conn = null;
PreparedStatement pstmt = null;
try{
conn = JDBCUtils.getConnection(1);
String sql="delete from pet where number=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, delNumber);
if(pstmt.executeUpdate()>0){
result = true;
}
}catch(Exception e ){
e.printStackTrace();
}finally{
JDBCUtils.close(conn);
}
return result;
}
- 区别:
(1)PreparedStatement接口:PreparedStatement是Statement的子接口,属于预处理操作,可多次执行,提供效率。使用Connection对象的prepareStatement()方法创建一个preparedStatement对象用于执行SQL语句。SQL语句用“?”作为所有动态参数的占位符,先进行预编译,当给占位符所在的变量赋值后,再执行该SQL语句。
(2)Statement接口:在一个给定的连接中执行SQL语句,获取执行后返回的结果。
Statement对象执行SQL语句有两种情况:一种是数据定义和更新语句,如CREATE、DELETE、UPDATE和INSERT等语句,使用Statement对象的executeUpdate方法执行;一种是数据查询语句,如SELECT语句,使用Statement对象的executeQuery 方法执行;
(二)实验总结
1.实验内容:
使用JDBC实现实验七的宠物商店完成实验内容,代码上传到码云,注意,务必将创建数据库的脚本文件随项目文件一起上传,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。
-
类图:
-
程序设计思路:设计JDBCUtils类,通过JDBC连接数据库,重新设计AdminDao类,使用Statement和PreparedStatement完成数据的获取、增加、修改和删除操作。
-
实验问题分析:
问题1:在进入第三个界面时,出现错误 。
原因:没有连接到数据库,没有引入sqljdbc4包。
解决方案:引入sqljdbc4包。
步骤:右击创建的JAVA工程,找到Build path ,选择 Add External Archives,找到要导入的包,点击打开就可以引入了。
问题2:如何进行修改操作。
解决方案:先将输入的编号的那组数据删除,再将输入的新的内容插入。try{ conn = JDBCUtils.getConnection(1); String sql="delete from pet where number=?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, delNumber); if(pstmt.executeUpdate()>0){ result = true; } }catch(Exception e ){ e.printStackTrace(); }finally{ JDBCUtils.close(conn); } try{ conn = JDBCUtils.getConnection(1); String sql = "insert into pet (number,name,price,age,num) values (?,?,?,?,?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1,pet.getNumber()); pstmt.setString(2,pet.getName()); pstmt.setDouble(3,pet.getPrice()); pstmt.setString(4,pet.getAge()); pstmt.setString(5,pet.getNum()); int num = pstmt.executeUpdate(); if(num > 0){ result = true; } } catch(Exception e ){ e.printStackTrace(); }finally{ JDBCUtils.close(conn); }
(三)代码托管
- 码云commit历史截图