JDBC更新语句在Netbeans中不起作用,但在SQL中起作用

时间:2015-10-05 12:46:24

标签: jdbc netbeans sql-update

我从一个数据库中提取数据,执行几项检查,并希望更新另一个数据库中的表。

我的update.executeQuery语句不起作用。但是,当我在SQL中复制语句字符串并执行它时,它确实有效。它可能有什么问题? (甚至方向也会帮助我)

创建更新字符串:

public static void createUpdateString() throws SQLException {

    try {
           updateString = "UPDATE ORDER_HEADER SET "
                   + "FRUIT=" + "'" + fruitName+ "',"
                   + "CUSTOMER_NAME =" + "'" + customerName + "'"
                   + " WHERE ORDER_NUMBER = TRIM(" + "'" + orderNumber + "')";

           updateData();
    }
    catch(SQLException e) {
        System.err.println("ERROR!: " + e.getMessage());
    }
}

执行更新查询:

public static void updateData() throws SQLException{
    try {
           conn.setAutoCommit(false);
           statementUpdate = conn.createStatement();
           statementUpdate.executeQuery(OrderObject.updateString);
           conn.commit();
           conn.setAutoCommit(true);
           statementUpdate.close();

    }
    catch(SQLException e) {
          System.err.println("Could not process query" + e.getMessage());
    }
}

1 个答案:

答案 0 :(得分:0)

这一行

          statementUpdate.executeQuery(OrderObject.updateString);

对我来说不对。尝试

          statementUpdate.executeUpdate(OrderObject.updateString);

代替。

UPDATE语句不是查询,因此您不要将executeQuery()与它们一起使用。 executeQuery()返回ResultSet,但使用UPDATE语句时,无法返回数据。相反,您使用executeUpdate()。 (请注意,您还使用executeUpdate()来运行INSERTDELETE语句 - executeInsert()个对象上没有任何executeDelete()Statement方法。)

数据库在这些情况下的行为方式因数据库而异。特别是,如果您尝试将executeQuery()UPDATE语句一起使用,则MySQL JDBC驱动程序会抛出以下消息的异常:

  

无法使用executeQuery()

发出数据操作语句