我试图运行preparedStatement ps
来检查数据库中是否存在数据。然后它将运行更新(如果存在)或插入(如果不存在)。但是,我收到语法错误
java.sql.SQLSyntaxErrorException:SQL语法有错误;检查与您的MySQL服务器版本对应的手册以获取正确的语法,以在第1行的'order WHERE date ='2019-05-22'附近使用
我无法找出错误所在。有人可以帮忙吗?
PreparedStatement ps,ps1;
ps =con.prepareStatement("Select 1 from order WHERE date = ?");
ps.setString(1, date);
ResultSet rsOrder=ps.executeQuery();
if(rsOrder.next()) {
System.out.println("reOrder: true");
ps1 = con.prepareStatement("UPDATE order SET result = ? WHERE date = ?");
ps1.setString(1, json);
ps1.setString(2, date);
int rs=ps1.executeUpdate();
}else {
System.out.println("reOrder: false");
ps1 = con.prepareStatement("INSERT INTO order (date,result) VALUES (?,?)");
ps1.setString(1, date);
ps1.setString(2, json);
int rs=ps1.executeUpdate();
}
答案 0 :(得分:1)
order
是MySQL中的保留字。因此,在不转义保留字的情况下,这是不允许的。
您可以通过在关键字周围添加`来对其进行转义:
Select 1 from `order` WHERE date = ?
UPDATE `order` SET result = ? WHERE date = ?
INSERT INTO `order` (date, result) VALUES (?, ?)