执行准备语句时的java.sql.SQLSyntaxErrorException

执行准备语句时的java.sql.SQLSyntaxErrorException,java,mysql,syntax-error,Java,Mysql,Syntax Error,我试图运行preparedStatement ps来检查数据库中是否存在数据。然后,如果存在,它将运行update,如果不存在,它将运行insert。但是,我收到语法错误 sql.SQLSyntaxErrorException:您的sql语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“order WHERE date='2019-05-22'附近使用的正确语法 我看不出错误在哪里。有人能帮忙吗 PreparedStatement ps,ps1; ps =con.p

我试图运行
preparedStatement ps
来检查数据库中是否存在数据。然后,如果存在,它将运行update,如果不存在,它将运行insert。但是,我收到语法错误

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();
        }
是MySQL中的保留字。因此,如果不转义保留字,它将不允许

您可以通过在关键字周围添加`将其转义为:

Select 1 from `order` WHERE date = ?

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

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

很可能,
order
是一个保留关键字。我只是简单地将表名从order改为orders,但我也接受你的回答