首页 > 数据库 > mysql教程 > MySQLPreparedStatement:为什么 `executeQuery()` 因语法错误而失败?

MySQLPreparedStatement:为什么 `executeQuery()` 因语法错误而失败?

Susan Sarandon
发布: 2025-01-11 15:26:41
原创
175 人浏览过

MySQL PreparedStatement: Why is `executeQuery()` Failing with a Syntax Error?

MySQL 准备语句:解决 executeQuery() 语法错误

将 Java 的 PreparedStatement 与 MySQL 一起使用时的一个常见问题涉及 SQLException 错误,指示占位符 (?) 附近的 SQL 语法问题。 这通常是由于错误执行语句而引起的。

问题:

使用 PreparedStatement 的 Java 代码可能会抛出类似于以下内容的异常:

<code>... 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 '?'</code>
登录后复制

错误的方法:

该错误通常在尝试使用带字符串参数(例如 SQL 查询本身)的 PreparedStatement 来执行 executeQuery() 时发生:

<code class="language-java">statement.executeQuery(searchPerson); // Incorrect</code>
登录后复制

这将 searchPerson 视为文字 SQL 字符串,忽略 PreparedStatement 中设置的占位符。

正确的解决方案:

关键是执行PreparedStatement 没有任何参数传递给executeQuery():

<code class="language-java">statement.executeQuery(); // Correct</code>
登录后复制

PreparedStatement 调用之前,参数已经使用 setString()setInt() 等绑定到 executeQuery()。 再次提供查询字符串作为参数会覆盖此绑定并导致语法错误。 executeQuery() 只是使用预先绑定的参数执行语句。

以上是MySQLPreparedStatement:为什么 `executeQuery()` 因语法错误而失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板