为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶不菲 2022-12-15 10:43:24
我试图运行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 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

order是MySQL中的保留字。所以它不会允许,没有转义保留字。


您可以通过在关键字周围添加 ` 来转义它:


Select 1 from `order` WHERE date = ?


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


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


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 62 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信