gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:21:14 26 4
gpt4 key购买 nike

我尝试运行 preparedStatement ps 来检查数据库中是否存在数据。然后它将运行更新(如果存在)或插入(如果不存在)。但是,我收到语法错误

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order WHERE date = '2019-05-22'' at line 1

我无法发现错误在哪里。谁能帮忙?

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();
}

最佳答案

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

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

Select 1 from `order` WHERE date = ?

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

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

关于执行准备语句时出现 java.sql.SQLSyntaxErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56287897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com