首頁 > 資料庫 > mysql教程 > 為什麼我在 MySQL JDBC 中的準備語句會拋出'MySQLSyntaxErrorException”?

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

Barbara Streisand
發布: 2024-10-31 00:48:29
原創
456 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板