JDBC 遇到具有有效語法的MySQLSyntaxError 異常
在探索JDBC 應用程式與MySQL 資料庫通訊時,開發人員可能會偶然發現可怕的MySQLSyntaxError 異常。有趣的是,同一條 INSERT 語句在 MySQL Workbench 中無縫執行,讓人感到困惑。
罪魁禍首在於 Java 程式碼中一個被忽略的細節:
<code class="java">sInserim.executeUpdate(sqlCommandInserim);</code>
這裡,開發人員無意中試圖執行原始 SQL 字串,其中包含佔位符 (?)。然而,對於一個PreparedStatement,只應該執行語句本身,而不需要參數。
要修正這個問題,請將上面的行替換為:
<code class="java">sInserim.executeUpdate();</code>
使用executeUpdate()方法而不需要參數確保PreparedStatement 使用設定的值執行。 executeUpdate(sqlString) 方法只能用於 Statement 物件。
順便說一下,透過在 finally 區塊中關閉PreparedStatement 來進行正確的資源管理至關重要。這可以防止發生異常時的資源洩漏,這種做法擴展到 Connection、Statement 和 ResultSet 物件。
以上是雖然 SQL 語句在 Workbench 中有效,為什麼我的 JDBC 程式碼會拋出 MySQLSyntaxError 例外?的詳細內容。更多資訊請關注PHP中文網其他相關文章!