您的SQL语法中有一个错误,但查询在MySQL工作台中运行



Query在IntelliJ中不起作用,但在SQL工作台中起作用。在其他查询中,updatePreparedStatement方法起作用。我已经检查了我的查询是否有语法错误,奇怪的是,它确实在sql工作台中运行。有人能帮一个小家伙吗?

public void updatePreparedStatement(String queryWithParameters, Object ... values) {
ArrayList<Map<String, Object>> result = new ArrayList<>();
try(PreparedStatement ps = this.connection.prepareStatement(queryWithParameters)) {
for(int i=0; i<values.length; i++) {
ps.setObject(i+1, values[i]);
}
int rs = ps.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}
}

public void assignOrdersToDeliveryRoute(BigInteger routeNumber, int[] orderNumbers){
DbConnection connection = new DbConnection();
System.out.println(Arrays.toString(orderNumbers));
StringBuilder orderNumberString = new StringBuilder();
int index =1;
for (int orderNumber : orderNumbers) {
String order = String.valueOf(orderNumber);
if (index < orderNumbers.length ){
orderNumberString.append(order).append(",");
}
else {
orderNumberString.append(order);
}
index++;
}
System.out.println(orderNumberString);
String query = "SET FOREIGN_KEY_CHECKS=0; UPDATE bestelling SET bezorgroutenummer = ? WHERE bestelnummer IN (" + orderNumberString + ")";
System.out.println(query);
connection.updatePreparedStatement(query, routeNumber);
}

https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html说:

prepared语句的SQL语法不支持多语句(即,用;字符分隔的单个字符串中的多个语句(。

一次运行一个语句。

最新更新