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