执行PreparedStatement时MySQL语法错误:“You Have an Error in Your SQL Syntax”
使用PreparedStatement执行查询时,用户可能会遇到“MySQLSyntaxErrorException 靠近“?””错误。此错误表示 SQL 查询中存在语法错误。
在此特定问题中,代码尝试使用 '?`占位符替换查询参数,但PreparedStatement 未正确替换这些占位符。
问题在于executeQuery() 方法调用。该代码通过调用 s.executeQuery(query) 而不是 s.executeQuery() 用原始查询覆盖准备好的查询。应使用无参数的executeQuery()方法来执行准备好的查询。
PreparedStatement s = conn.prepareStatement(query); s.setInt(1, intValue); s.setString(2, strValue); rs = s.executeQuery(); // Correct
此外,由于未关闭的连接、语句和结果集,代码可能会泄漏资源。应在finally块中关闭资源以防止资源耗尽。
try { ... } finally { if (rs != null) rs.close(); if (s != null) s.close(); if (conn != null) conn.close(); }
以上是为什么我在 Java 中使用PreparedStatement 时会收到''?'附近的 MySQL 语法错误”?的详细内容。更多信息请关注PHP中文网其他相关文章!