【问题标题】:You have an error in your SQL syntax but query runs in MySQL workbench您的 SQL 语法有错误,但查询在 MySQL 工作台中运行
【发布时间】:2021-08-14 04:40:48
【问题描述】:

查询在 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);
}

【问题讨论】:

  • “在 IntelliJ 中不起作用”是什么意思?具体错误是什么?

标签: java mysql sql intellij-idea


【解决方案1】:

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

预准备语句的 SQL 语法不支持多语句(即,单个字符串中的多个语句由 ; 字符分隔)。

一次运行一个语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2019-06-04
    • 1970-01-01
    • 2014-09-29
    相关资源
    最近更新 更多