You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java执行PreparedStatement插入MySQL报语法错但手动执行SQL正常如何解决

问题原因

你错误调用了PreparedStatement的executeUpdate方法:
PreparedStatement提供的无参executeUpdate()方法,才会执行你预编译完成、已经替换完所有占位符的SQL语句。你代码中调用方法时传入了最初定义的、带?占位符的原始SQL字符串,相当于直接绕过了预编译、参数替换的逻辑,把未填充参数的SQL语句直接发给了MySQL,所以触发了语法报错。
你代码里打印的prepSql输出是已经完成参数替换的可执行SQL,所以复制到MySQL控制台可以正常运行,和你实际传入方法执行的语句并不是同一个。

解决方案

把执行SQL的代码行修改为无参调用即可:

rowInserted = prepSql.executeUpdate();

内容的提问来源于stack exchange,提问作者XQ_CHIA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:45:01