java Oracle如何正确执行事务?
我的发言:
statement.addBatch("START TRANSACTION;" +
"UPDATE FIRST_TABLE SET FIRST_FIELD = 1;" +
"UPDATE SECOND_TABLE SET SECOND_FIELD = 2;" +
"UPDATE THIRD_TABLE SET THIRD_FIELD = 3;" +
"COMMIT;");
在下一行中抛出异常:
statement.executeBatch();
如果我使用方法execute
,也会发生同样的情况:
statement.execute(myTransaction);
例外情况:
java.sql.BatchUpdateException: ORA-00900: invalid SQL statement
我使用甲骨文。如果在命令行或SQLIDE中执行此语句,则没有任何异常。在这种情况下,它工作正常。只有在java代码中才存在此异常。怎么了
# 1 楼答案
作为旁注,为了创建一批SQL,您必须将每条语句分别添加到该批中
因此,不是:
使用:
但是,这不是运行事务的标准方式。要运行事务,请执行以下操作:
# 2 楼答案
通常,您会使用连接的setAutoCommit()方法启动事务,运行语句,最后适当地调用commit()或rollback()。这是一种与数据库无关的事务处理方式。不确定,为什么要为相同的对象构造SQL!你能详细说明一下你的用例吗
注意:在获取连接和关闭连接时,在上面的代码中有许多角落的情况需要处理,为了使这看起来更简单,请忽略此项
# 3 楼答案
尝试将每个Update语句添加到一个单独的
addBatch()
# 4 楼答案
试试看