2012-03-12 178 views
1

我已經開始使用準備好的語句來執行我的sql更新,但是我在更新時似乎遇到了問題。邏輯看起來很合理,但每次進入更新段時都會出現錯誤。我可以刪除或插入罰款。 Anywho ...準備好的語句更新問題

Connection con = getDBConnection(); 
PreparedStatement pstmt = null; 

String query = "update table set int = ?, String= ? where int= ? and date= ?"; 
pstmt = con.prepareStatement(query); 
pstmt.setInt(1, var); 
pstmt.setDate(2, sqlDate); 
pstmt.setInt(3, intVar); 
pstmt.setString(4, stringVar); 
pstmt.executeUpdate(); 

我在這裏做錯了什麼?我已經完成了所有的故障排除工作,除此之外,一切似乎都很順利。

Error = "A non-numeric character was found where a numeric was expected" 

回答

2

你有你的字符串回合日期錯誤的方式 - 你打電話setDate(2, ...)當第二個參數是在上下文中的「?字符串=」當第四個參數在「日期=?」的上下文中時爲setString(4, ...)

誠然,你得到的錯誤是針對有些奇怪,但它是所有我可以看到... ...

+0

所以,在「pstmt.setWhatever」是放慢參數值(例如1,2,3 ,4)與查詢語句或數據庫列安排相關? 澄清:數據庫有4列,abcd 語句設置爲ac其中bd 然後,集合語句爲a = 1,c = 2,b = 3和d = 4 通常,在數據庫中設置信息時這將是 a = 1 b = 2 c = 3 d = 4 ... 如果這是有道理的。 – cphilpot 2012-03-12 23:29:36

+0

@cphilpot:它與SQL相關 - 您指定的索引作爲「setDate」的第一個參數等等是SQL *中的位置*。數據庫列順序在這裏是無關緊要的。 (如果你剛剛完成了'INSERT INTO X VALUES(?,?,?,?)',這將是相關的 - 但我個人認爲這是一個壞主意。) – 2012-03-12 23:31:18

+0

這可能是我困惑的地方。因爲我有一個與列號相關的插入語句。去嘗試你的建議,看看是否能解決它。剛開始使用準備好的陳述今天(被錯誤地教導)。 – cphilpot 2012-03-12 23:33:05