执行prepare语句时java.sql.SQLSyntaxErrorException

时间:2019-05-24 07:37:38

标签: java mysql syntax-error

我试图运行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();
        }

1 个答案:

答案 0 :(得分:1)

order是MySQL中的保留字。因此,在不转义保留字的情况下,这是不允许的。

您可以通过在关键字周围添加`来对其进行转义:

Select 1 from `order` WHERE date = ?

UPDATE `order` SET result = ? WHERE date = ?

INSERT INTO `order` (date, result) VALUES (?, ?)