2010-06-07 57 views
2

我有過這樣的更新:如何從PreparedStatement中獲取錯誤或警告?

update table set col1=?,col2=?,col3=? where col4=?; 

,我填起來是這樣的:

statement.setString(1,"some_value"); 
statement.setString(2,"some_value"); 
statement.setString(3,"some_value"); 

,我忘了添加第四value.I做executeUpdate,當然一個什麼也沒有發生數據庫。我花了大約1個小時調試它,看看它出錯的地方。然後我修改我的代碼以打印由getWarnings方法返回的SQLWarning對象。 它總是返回null。我甚至在設置第四個參數之前,將代碼修改爲它的錯誤狀態,並且仍然沒有警告。有誰知道如何得到一個錯誤/警告?

如果很重要,我的連接設置爲autoCommit。

+0

是你的代碼捕捉和吞嚥異常? – 2010-06-07 18:19:04

+0

不,所有例外都打印完整的堆棧跟蹤。 – Geo 2010-06-07 19:02:48

+0

這顯然是JDBC驅動程序特定的或SQLite JDBC驅動程序中的「錯誤」。根據我的經驗,如果缺少參數,MySQL和PostgreSQL都會拋出一個自我解釋的SQLException。例如MySQL會拋出'java.sql.SQLException:這裏沒有爲參數4'指定值。 – BalusC 2010-06-07 21:59:01

回答

3

executeUpdate返回語句修改的行數。您可以檢查這個結果是否爲0,如果是,則記錄您自己的警告。