簡體   English   中英

您的 SQL 語法有錯誤,但查詢在 MySQL 工作台中運行

[英]You have an error in your SQL syntax but query runs in MySQL workbench

查詢在 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說:

准備好的語句的 SQL 語法不支持多語句(即,單個字符串中的多個語句由;字符分隔)。

一次運行你的陳述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM