1 public boolean updataEmployee(Connection con,EmployeeVo vaule) { 2 boolean flag = false; 3 ResultSet set = null; 4 5 //预编写sql,用?占位 6 String sql ="update student set name=? where id=?"; 7 8 //创建PreparedStatement对象 9 PreparedStatement pstmt = null; 10 11 try { 12 pstmt = con.prepareStatement(sql); //预编译,等待赋值给占位符 13 pstmt.setString(1,vaule.getName()); 14 pstmt.setString(2,vaule.getId()); 15 16 int n = pstmt.executeUpdate(sql); 17 } catch (SQLException e) { 18 e.printStackTrace(); 19 } 20 21 return flag; 22 }
报错 :
ORA-01008: 并非所有变量都已绑定
问题出来第16行,
executeUpdate(sql)这里的参数sql还是上面没有给占位符赋值的未完成的sql语句,变量都还未赋值,所以会说没有绑定。
其实再第13 14行执行完之后
PreparedStatement对象里的sql语句已经是完整的了,这参数一加又被覆盖掉了。