首頁  >  文章  >  資料庫  >  為什麼我在 MySQL JDBC 中的準備語句會拋出“MySQLSyntaxErrorException”?

為什麼我在 MySQL JDBC 中的準備語句會拋出“MySQLSyntaxErrorException”?

Barbara Streisand
Barbara Streisand原創
2024-10-31 00:48:29359瀏覽

Why Does My Prepared Statement in MySQL JDBC Throw a

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中文網其他相關文章!

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