「?」附近的MySQLSyntaxErrorException:使用PreparedStatements解決語法錯誤
在Java中執行PreparedStatements一是可怕的「接近'?'」異常。要了解其原因和解決方案,讓我們深入研究該問題。
問題描述
嘗試執行PreparedStatement會導致MySQLSyntaxErrorException,錯誤代碼為1064,指示語法錯誤。使用 MySQL 查詢瀏覽器取代查詢中的值成功,表示問題出在程式碼中。
相關程式碼
String query = "select MemberID, MemberName from members where MemberID = ? or MemberName = ?"; Connection conn = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD); PreparedStatement s = conn.prepareStatement(query); s.setInt(1, 2); s.setString(2, "zen"); ResultSet rs = s.executeQuery(query); // Error
異常
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 '? or MemberName = ?' at line 1
解決方法
這個錯誤的根本原因是MySQL遇到未處理的「?」在SQL 查詢中。要解決此問題,請按照下列步驟操作:ResultSet rs = s.executeQuery();
附加註意事項
以上是為什麼`s.executeQuery(query)`會導致MySQLSyntaxErrorException'near '?'”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!