Java执行PreparedStatement插入MySQL报语法错但手动执行SQL正常如何解决
问题原因
你错误调用了PreparedStatement的executeUpdate方法:PreparedStatement提供的无参executeUpdate()方法,才会执行你预编译完成、已经替换完所有占位符的SQL语句。你代码中调用方法时传入了最初定义的、带?占位符的原始SQL字符串,相当于直接绕过了预编译、参数替换的逻辑,把未填充参数的SQL语句直接发给了MySQL,所以触发了语法报错。
你代码里打印的prepSql输出是已经完成参数替换的可执行SQL,所以复制到MySQL控制台可以正常运行,和你实际传入方法执行的语句并不是同一个。
解决方案
把执行SQL的代码行修改为无参调用即可:
rowInserted = prepSql.executeUpdate();
内容的提问来源于stack exchange,提问作者XQ_CHIA
相关产品推荐
相关产品推荐

