为什么我在 MySQL JDBC 中的准备语句会抛出'MySQLSyntaxErrorException”?

Barbara Streisand
发布: 2024-10-31 00:48:29
原创
357 人浏览过

Why Does My Prepared Statement in MySQL JDBC Throw a

MySQL 准备语句:克服“MySQLSyntaxErrorException”错误

在 JDBC for MySQL 中使用准备语句时,必须确保正确的语法和用法。开发人员面临的一种常见错误是“MySQLSyntaxErrorException”。让我们探讨此错误的特定实例以及相应的解决方案。

问题:

使用 MySQL 连接器的基于 Java 的应用程序在执行准备好的声明。该代码使用以下语句进行数据检索:

<code class="java">PreparedStatement stmt = con.prepareStatement(selectSQL);
stmt.setInt(1, ad_id);
rs = stmt.executeQuery(selectSQL);</code>
登录后复制

执行时抛出错误。

错误消息:

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 '?' at line 1
登录后复制

解决方案:

错误在于执行准备好的语句的语法中。具体来说,以下行是不正确的:

<code class="java">rs = stmt.executeQuery(selectSQL);</code>
登录后复制

执行预准备语句的正确语法是:

<code class="java">rs = stmt.executeQuery();</code>
登录后复制

通过在executeQuery 方法中省略 selectSQL 参数,将执行该语句

说明:

Prepared 语句中,在语句准备时传入 SQL 查询,使用setX 方法(例如 setInt)。 executeQuery 方法用于获取结果集,调用该方法时应不带任何参数。原始代码在executeQuery方法调用中错误地包含了SQL查询字符串,导致语法错误。

以上是为什么我在 MySQL JDBC 中的准备语句会抛出'MySQLSyntaxErrorException”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!