“?”附近的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中文网其他相关文章!