首页 >数据库 >mysql教程 >为什么我在使用 MySQLPreparedStatements 时会收到''?'附近的语法错误”?

为什么我在使用 MySQLPreparedStatements 时会收到''?'附近的语法错误”?

Patricia Arquette
Patricia Arquette原创
2024-12-11 12:46:15556浏览

Why Am I Getting a

“?”附近的异常在MySQL中执行PreparedStatement时

在Java中,当使用PreparedStatement执行查询时,可能会遇到MySQLSyntaxErrorException,错误号为1064,表示“?”附近有语法错误。即使查询在具有替换值的 MySQL 查询浏览器中工作,也可能会发生这种情况。

经过仔细检查,很明显 MySQL 无法解释“?” SQL 查询中的占位符,认为其语法无效。这是因为PreparedStatement 尚未替换这些占位符。

您共享的代码片段错误地用原始版本覆盖了准备好的查询。要纠正此问题,请使用PreparedStatement#executeQuery()而不是Statement#executeQuery(String):

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

注意:虽然与当前问题无关,但您的代码无法关闭连接、语句和结果集。这种遗漏可能会导致资源耗尽和随后的应用程序崩溃。通过在finally块中关闭这些对象来实现正确的JDBC习惯用法:

try (Connection conn = DriverManager.getConnection(...);
     PreparedStatement s = conn.prepareStatement(...);
     ResultSet rs = s.executeQuery()) {
     // Query execution code
} finally {
     if (rs != null) rs.close();
     if (s != null) s.close();
     if (conn != null) conn.close();
}

以上是为什么我在使用 MySQLPreparedStatements 时会收到''?'附近的语法错误”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn