MySQL 準備語句:克服「MySQLSyntaxErrorException」錯誤
在JDBC for MySQL 中使用準備語句時,必須確保正確的語法和用法。開發人員面臨的常見錯誤是「MySQLSyntaxErrorException」。讓我們探討此錯誤的特定實例以及相應的解決方案。
問題:
使用 MySQL 連接器的基於 Java 的應用程式在執行準備好的聲明。程式碼使用以下語句進行資料擷取:
<code class="java">PreparedStatement stmt = con.prepareStatement(selectSQL); stmt.setInt(1, ad_id); rs = stmt.executeQuery(selectSQL);</code>
執行時拋出錯誤。
錯誤訊息:
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 '?' at line 1
解決方案:
錯誤在於執行準備好的語句的語法中。具體來說,以下行是不正確的:
<code class="java">rs = stmt.executeQuery(selectSQL);</code>
執行預準備語句的正確語法是:
<code class="java">rs = stmt.executeQuery();</code>
透過在executeQuery 方法中省略selectSQL 參數,將執行該語句
說明:
Prepared 語句中,在語句準備時傳入SQL 查詢,使用setX 方法(例如setInt)。 executeQuery 方法用於取得結果集,呼叫方法時應不帶任何參數。原始程式碼在executeQuery方法呼叫中錯誤地包含了SQL查詢字串,導致語法錯誤。
以上是為什麼我在 MySQL JDBC 中的準備語句會拋出“MySQLSyntaxErrorException”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!