预处理
PreparedStatement stmt = conn.prepareStatement(sql);
Statement stmt = conn.createStatement();//能过连接对象创建一个语句对象
PreparedStatement是Statement的子接口
这两类的对象都是能过Connection对象创建,但创建的方法不同:
Statement stmt = conn.createStatement();
PreparedStatement stmt= conn.prepareStatement(String sql语句);
1.Statement语句中的sql语句是在执行时传参数;PreparedStatement语句中的sql语句是创建时传参数.
2.PreparedStatement语句中的sql语句允许使用?参数,Statement语句中的sql语句中参数是字符中拼接。
//在学生表(Student)中查"张三"的信息,"张三"是保存在变量name中
sql拼接:
String sql = "select * from student where name = '"+name+"'";
sql语句使用参数:
String sql = "select * from student where name = ?";
“?”是预留一个参数位,在执行之前完成替换就可以了。
再比如在"product"中表输入一个商品,商品的数据封装“p1”的商品对象中
前提条件:
Product p1 = new Product();
p1.setName("牙膏");
p1.setPrice(12);
p2.setAmount(1);
sql拼接:
String sql = "insert product(pname, price, amount) values('"+p1.getName()+"',"+p1.getPrice()+","+p1.getAmount()+")";
sql语句使用参数:
String sql = "insert product(pname, price, amount) values(?,?,?)";
替换参数的方法:
pstmt.setXxx(编号,值);
Xxx:数据库中对应数据类型
编号:从1开始的“?”顺序
值:要替换内容
stmt.setString(1,p1.getName());
stmt.setDouble(2,p1.getPrice());
stmt.setInt(3,p1.getAmount());
1 插入数据
public boolean ChaRu3(User user){ boolean flag=true; Connection conn=null; PreparedStatement ps=null; //创建PreparedStatement 对象 String sql= "insert into user (name,pwd) values(?,?)"; //sql语句不再采用拼接方式,应用占位符问号的方式写sql语句。 conn=DBConnUtil.getConn(); try { ps=conn.prepareStatement(sql); ps.setString(1, user.getName()); //对占位符设置值,占位符顺序从1开始,第一个参数是占位符的位置,第二个参数是占位符的值。 ps.setString(2, user.getPwd()); int i=ps.executeUpdate(); if(i==0){ flag=false; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ DBConnUtil.closeAll(null, ps, conn); } return flag; }
2 修改数据
public boolean XiuGai3(User user){ boolean flag=true; Connection conn=null; PreparedStatement ps=null; String sql="update user set pwd=? where name=?"; conn=DBConnUtil.getConn(); try { ps=conn.prepareStatement(sql); ps.setString(1, user.getPwd()); ps.setString(2, user.getName()); int i= ps.executeUpdate(); if(i==0){ flag=false; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ DBConnUtil.closeAll(null, ps, conn); } return flag; }
3 删除数据
public boolean ShanChu3(int id){ boolean flag=true; Connection conn=null; PreparedStatement ps=null; String sql="delete from user where id=?"; conn=DBConnUtil.getConn(); try { ps=conn.prepareStatement(sql); ps.setInt(1, id); int i=ps.executeUpdate(); if(i==0){ flag=false; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ DBConnUtil.closeAll(null, ps, conn); } return flag; }
4 查看数据
public List<User> ChaKan3(){ List<User> list= new ArrayList<User>(); Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; String sql="select * from user"; conn=DBConnUtil.getConn(); try { ps=conn.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()){ User user= new User(); user.setName(rs.getString("name")); list.add(user); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ DBConnUtil.closeAll(rs, ps, conn); } return list; }