我从一个数据库中提取数据,执行几项检查,并希望更新另一个数据库中的表。
我的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());
}
}
答案 0 :(得分:0)
这一行
statementUpdate.executeQuery(OrderObject.updateString);
对我来说不对。尝试
statementUpdate.executeUpdate(OrderObject.updateString);
代替。
UPDATE
语句不是查询,因此您不要将executeQuery()
与它们一起使用。 executeQuery()
返回ResultSet
,但使用UPDATE
语句时,无法返回数据。相反,您使用executeUpdate()
。 (请注意,您还使用executeUpdate()
来运行INSERT
和DELETE
语句 - executeInsert()
个对象上没有任何executeDelete()
和Statement
方法。)
数据库在这些情况下的行为方式因数据库而异。特别是,如果您尝试将executeQuery()
与UPDATE
语句一起使用,则MySQL JDBC驱动程序会抛出以下消息的异常:
无法使用executeQuery()
发出数据操作语句