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語句已經是完整的了,這參數一加又被覆蓋掉了。