1
所以我有一個更新MS Access 2007表中的某些字段的方法,每當我嘗試更新時,我得到以下異常: java.sql.SQLException: [Microsoft] [ODBC Microsoft Access Driver]參數太少。預計11個。 它總是顯示預計會比查詢中多一個。更新聲明Java的sql例外:太多的參數預計一個
該方法的代碼是:
try {
String upit = "UPDATE Izlagac SET NazivIzlagaca=?, PIB=?, Telefon=?, "
+ " KontaktOsoba=?, Email=?, TipIzlagaca=?, Ulica=?, Broj=?, Mesto=?, Drzava=? WHERE "
+ " SifraIzlagaca = " + i.getSifraIzlagaca() + ";";
PreparedStatement pstmt = con.prepareStatement(upit);
pstmt.setString(1, i.getNazivIzlagaca());
pstmt.setString(2, i.getPIB());
pstmt.setString(3, i.getTelefon());
pstmt.setString(4, i.getKontaktOsoba());
pstmt.setString(5, i.getEmail());
pstmt.setString(6, i.getTipIzlagaca());
pstmt.setString(7, i.getUlica());
pstmt.setString(8, i.getBroj());
pstmt.setString(9, i.getMesto());
pstmt.setString(10, i.getDrzava());
System.out.println(pstmt.toString());
pstmt.executeUpdate();
pstmt.close();
return true;
} catch (SQLException ex) {
Logger.getLogger(DBBroker.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
我沒有使用別名,這樣似乎並不就是爲什麼駕駛員所期望的附加參數的原因。所有列名拼寫正確,三重檢查。
'i.getSifraIzlagaca()'不會返回問號,對不對? – yankee
不,它會返回一個正常的字符串和正確的值。 – Matija
爲什麼不使用'... WHERE SifraIzlagaca =?'和'pstmt.setString(11,i.getSifraIzlagaca());'? –