使用预处理语句的SQL语法错误

时间:2019-01-29 14:37:40

标签: java mysql sql jdbc

String select = "select script from kit where (name = ?) and (creator = ?)";
PreparedStatement prepared = db.prepareStatement(select);
prepared.setString(1, name);
prepared.setInt(2, creator);
ResultSet result = prepared.executeQuery(select);

给我一​​个“您的SQL语法错误”

  

您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以在第1行的'?)和(creator =?)'附近使用正确的语法

这是怎么回事?我该如何解决?

1 个答案:

答案 0 :(得分:0)

我的猜测是JDBC或您的基础数据库不喜欢括号中WHERE子句中的术语。尝试删除它们:

String select = "select script from kit where name = ? and creator = ?";
PreparedStatement prepared = db.prepareStatement(select);
prepared.setString(1, name);
prepared.setInt(2, creator);
ResultSet result = prepared.executeQuery();

还要注意,PreparedStatement#executeQuery()没有任何参数。由于已经准备好语句并绑定了参数,因此只需要执行该查询即可。

令我感到惊讶的是,MySQL正在抱怨这一点,因为从我在本地进行的测试来看,您的当前查询应该没有任何问题地执行。