我的发言:
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我用甲骨文。如果在命令行或SQL中执行此语句,则不会有任何异常。在这种情况下它能正常工作。只有在java代码中才有这个异常。怎么啦?
发布于 2012-08-15 08:45:47
试试看
connection.setAutoCommit(false);
statement.addBatch("UPDATE FIRST_TABLE SET FIRST_FIELD = 1");
statement.addBatch("UPDATE SECOND_TABLE SET SECOND_FIELD = 2");
statement.addBatch("UPDATE THIRD_TABLE SET THIRD_FIELD = 3");
int [] counts = statement.executeBatch();
connection.commit();发布于 2012-08-15 08:45:29
尝试在分隔的addBatch()中添加每个更新语句
发布于 2012-08-15 08:43:11
通常,您将使用连接的setAutoCommit()方法启动事务,运行语句,最后适当地调用commit()或rollback()。这是一种与数据库无关的在事务中工作的方法。不确定,为什么要为相同的对象构造SQL!你能详细说明一下用例吗?
Connection con = dataSource.getConnection();
try {
con.setAutoCommit(false);
Statement stmt = con.prepareStatement("<your update statement with placeholders for parameters");
stmt.set(1, <Value1>);
stmt.set(2, <Value2>);
stmt.execute();
con.commit();
}
catch (SQLException sqle) {
// Handle the exception
con.rollback();
}
finally {
con.close();
}注意:在获得连接和关闭连接时,在上面的代码中有许多需要处理的角落情况,为了使这看起来现在看起来很简单而忽略了它!
https://stackoverflow.com/questions/11966304
复制相似问题