首頁 >Java >java教程 >為什麼`executeQuery(String)`會導致PreparedStatements出現SQL語法錯誤?

為什麼`executeQuery(String)`會導致PreparedStatements出現SQL語法錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-06 11:24:16539瀏覽

Why Does `executeQuery(String)` Cause SQL Syntax Errors with PreparedStatements?

不正確的方法呼叫導致PreparedStatement執行中的語法錯誤

使用PreparedStatement執行SQL查詢時,遵守正確的語法和執行方法很重要,以避免語法錯誤。

嘗試透過呼叫executeQuery(String) 來執行查詢時會出現一個常見問題PreparedStatement 物件。這是不正確的,因為它會用原始查詢覆蓋準備好的查詢。

正確的方法是呼叫不帶任何參數的方法executeQuery(),如下所示:

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);        
rs = s.executeQuery(); // OK!

透過進行此調整後,您可以確保正確執行準備好的查詢,從而消除「您的SQL 語法中有錯誤」錯誤。

其他注意:

  • 透過關閉try-with-resources 區塊中的Connection、Statement 和ResultSet 物件來防止資源洩漏,確保正確的資源管理至關重要。
  • 您的情況的特定錯誤訊息是「您的 SQL 語法有錯誤;請檢查與您的 MySQL 伺服器版本相對應的手冊,以了解在 '? 或 MemberName = 附近使用的正確語法」 ?在第 1 行”,表明 MySQL 遇到了無法識別的語法元素“?”在準備好的查詢中,突出顯示正確參數綁定的需要。

以上是為什麼`executeQuery(String)`會導致PreparedStatements出現SQL語法錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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