首頁 >Java >java教程 >MySQLPreparedStatement 語法錯誤:為什麼 `executeQuery()` 會因 `?` 佔位符而失敗?

MySQLPreparedStatement 語法錯誤:為什麼 `executeQuery()` 會因 `?` 佔位符而失敗?

Susan Sarandon
Susan Sarandon原創
2024-12-06 07:30:111034瀏覽

MySQL PreparedStatement Syntax Error: Why is `executeQuery()` Failing with `?` Placeholders?

MySQL 語法錯誤:了解PreparedStatement 語法

您使用PreparedStatement 執行查詢的Java 程式碼遇到MySQL 語法錯誤(錯誤編號 1064)。當 SQL 語法本身有問題時,通常會引發此錯誤。

辨識錯誤來源:

提供的程式碼顯示您正在嘗試執行包含「?」表示的佔位符的查詢。 MySQL 不會解釋「?」字元作為佔位符,而是將它們視為 SQL 語句的一部分。

解決方案:利用無參數的executeQuery() 方法

要解決此問題,您需要使用準備好的語句的executeQuery()方法,不指定查詢字串作為參數。

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, 2);
s.setString(2, "zen");
ResultSet rs = s.executeQuery(); // Correct syntax

省略executeQuery()中的查詢字串,您將允許準備好的語句使用提供的參數值執行先前定義的查詢。

警告:資源洩漏

您的程式碼目前缺乏對資源分配和釋放的正確處理。建議使用 JDBC 慣用法,在 try 區塊的 finally 區塊中關閉所有取得的資源(Connection、Statement、ResultSet)。否則,您的應用程式可能會隨著時間的推移耗盡資料庫的資源,從而導致不穩定。

以上是MySQLPreparedStatement 語法錯誤:為什麼 `executeQuery()` 會因 `?` 佔位符而失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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