执行准备语句时出现 java.sql.SQLSyntaxErrorException

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

        }


蝴蝶不菲
浏览 63回答 1
1回答

繁花不似锦

order是MySQL中的保留字。所以它不会允许,没有转义保留字。您可以通过在关键字周围添加 ` 来转义它:Select 1 from `order` WHERE date = ?UPDATE `order` SET result = ? WHERE date = ?INSERT INTO `order` (date, result) VALUES (?, ?)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java