(一)学习总结
(二)通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用PreparedStatement接口而不使用Statement,比较使用两种接口的不同之处。
// 获取所有数据
public ArrayList<Pet> queryAllData()
{ Connection conn=null;
Statement stmt=null; ResultSet rs=null;
ArrayList<Pet> list=new
ArrayList<Pet>();
try{ conn=JDBCUtils.getConnection(1);
//获得链接对象,用SQLSEVER数据库连接方法
stmt=conn.createStatement();
//建立SQL语句的对象,对象类型为Statement接口
String sql="select no,variety,age,sums,price from pet";
//查询语句 rs=stmt.executeQuery(sql);
//执行SQL查询语句
while(rs.next())
{ Pet thisPet=new Pet();
thisPet.setNo(rs.getString("no"));
thisPet.setVariety(rs.getString("variety"));
thisPet.setAge(rs.getInt("age"));
thisPet.setSum(rs.getInt("sums"));
thisPet.setPrice(rs.getDouble("price"));
list.add(thisPet);
//将查询出的这个宠物信息存放到list宠物集合中
} return list;
}catch(Exception e)
{ e.printStackTrace(); }
finally{ JDBCUtils.close(conn); }
return null; }
// 删除数据
public boolean delPet(String delNo)
{ boolean result=false; Connection conn=null;
PreparedStatement pstmt=null;
try{ conn=JDBCUtils.getConnection(1);
//用SQLSEVER数据库连接方法连接
String sql="delete from pet where no=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, delNo);
if(pstmt.executeUpdate()>0){ result=true; }
}catch(Exception e){ e.printStackTrace();
}finally{ JDBCUtils.close(conn); }
return result; }
因为在没有动态参数使用Statement接口,在添加和删除操作时(执行的语句中含动态参数),用了PreparedStatement接口。
执行静态SQL语句时,通常通过Statement实例实现;
执行数据查询语句时,如SELECT语句,使用Statement对象的executeQuery 方法执行。
PreparedStatement接口会用Connection对象的prepareStatement()方法创建一个preparedStatement对象来执行SQL语句,而Statement的接口会用Connection对象的createStatement()方法创建一个Statement对象来执行SQL语句,PreparedStatement接口用在SQL语句中有动态变量的情况,而Statement的接口用在SQL语句没有动态变量的情况。