JDBC 更新语句在 Netbeans 中不起作用但在 SQL 中起作用
JDBC Update Statement not working in Netbeans but working in SQL
我从一个数据库中提取数据,执行一些检查并想更新另一个数据库中的 table。
我的 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());
}
}
这一行
statementUpdate.executeQuery(OrderObject.updateString);
我觉得不对。尝试
statementUpdate.executeUpdate(OrderObject.updateString);
相反。
UPDATE
语句不是查询,因此您不要将 executeQuery()
与它们一起使用。 executeQuery()
return 是 ResultSet
,但是使用 UPDATE
语句没有数据到 return。相反,您使用 executeUpdate()
。 (请注意,您还使用 executeUpdate()
到 运行 INSERT
和 DELETE
语句 - 在 Statement
个对象。)
数据库在这些情况下的行为因数据库而异。特别是,如果您尝试将 executeQuery()
与 UPDATE
语句一起使用,MySQL JDBC 驱动程序将抛出异常并显示以下消息:
Can not issue data manipulation statements with executeQuery()
我从一个数据库中提取数据,执行一些检查并想更新另一个数据库中的 table。
我的 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());
}
}
这一行
statementUpdate.executeQuery(OrderObject.updateString);
我觉得不对。尝试
statementUpdate.executeUpdate(OrderObject.updateString);
相反。
UPDATE
语句不是查询,因此您不要将 executeQuery()
与它们一起使用。 executeQuery()
return 是 ResultSet
,但是使用 UPDATE
语句没有数据到 return。相反,您使用 executeUpdate()
。 (请注意,您还使用 executeUpdate()
到 运行 INSERT
和 DELETE
语句 - 在 Statement
个对象。)
数据库在这些情况下的行为因数据库而异。特别是,如果您尝试将 executeQuery()
与 UPDATE
语句一起使用,MySQL JDBC 驱动程序将抛出异常并显示以下消息:
Can not issue data manipulation statements with executeQuery()