首頁  >  文章  >  資料庫  >  儘管使用了PreparedStatement,為什麼我的Java程式碼仍會出現MySQLSyntaxError例外狀況?

儘管使用了PreparedStatement,為什麼我的Java程式碼仍會出現MySQLSyntaxError例外狀況?

Susan Sarandon
Susan Sarandon原創
2024-10-31 00:35:30255瀏覽

Why Does My Java Code Get a MySQLSyntaxError Exception Despite Using a PreparedStatement?

儘管語句正確,JDBC 傳回 MySQLSyntaxError 例外

嘗試將新資料列插入 MySQLor 異常值時,Java 遇到 MySQLSynxError 異常。檢查 SQL 語句後,發現它在語法上是正確的。然而,當直接使用MySQL Workbench執行時,該語句就成功了。

相關程式碼使用PreparedStatement來執行INSERT語句,如下所示:

<code class="java">PreparedStatement sInserim = conn.prepareStatement(sqlCommandInserim);
sInserim.setString(1, utente);
sInserim.setString(2, nome);
sInserim.executeUpdate(sqlCommandInserim);</code>

遇到的例外是:

<code class="text">com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? , ? , DEFAULT , NULL )' at line 1</code>

經過仔細檢查,發現佔位符(?)沒有被PreparedStatement正確替換。從以下行可以明顯看出這一點:

<code class="java">sInserim.executeUpdate(sqlCommandInserim);</code>

使用原始 SQL 字串作為參數呼叫executeUpdate() 方法,而不是使用帶有其設定值的PreparedStatement 物件。

為了修正問題,程式碼修改為:

<code class="java">sInserim.executeUpdate();</code>

透過使用不帶 SQL 字串參數的executeUpdate(),自動使用PreparedStatement 的值,解決 MySQLSyntaxError 例外。

注意:

雖然與所述問題沒有直接關係,但建議在finally區塊中關閉PreparedStatement(以及任何其他資源,例如Connection、Statement和ResultSet)以防止出現異常時資源外洩。

以上是儘管使用了PreparedStatement,為什麼我的Java程式碼仍會出現MySQLSyntaxError例外狀況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn