事务不支持Java连接。关闭回滚?
没有Java连接。关闭回滚到最后一个块
我知道。Net SqlConnection。close做到了
有了这个,我可以尝试/最终成功拦截而不被捕获
例如:
try {
conn.setAutoCommit(false);
ResultSet rs = executeQuery(conn, ...);
....
executeNonQuery(conn, ...);
....
conn.commit();
} finally {
conn.close();
}
# 1 楼答案
不同数据库之间的行为完全不同。例如:
甲骨文
当使用打开的事务(如@Mr.Shinny and New)关闭连接时,事务被提交安宇 声明
SQL Server
close Method (SQLServerConnection)
# 2 楼答案
根据the javadoc,在调用close方法之前,应该尝试提交或回滚。否则,结果将由实现定义
# 3 楼答案
对于MySQL JDBC,如果关闭连接,则实现会回滚连接,而不需要调用提交或回滚方法
# 4 楼答案
在最后一个区块中回滚是没有用的。在你承诺之后,并且承诺成功了,为什么要回滚?所以如果我是你,我会在接球区打滚
# 5 楼答案
在我使用过的任何数据库系统中,在提交后立即回滚都没有坏处,因此如果在try块中提交,在finally块中回滚,则会提交内容,而如果异常或提前返回导致提交丢失,回滚将回滚事务。所以安全的做法是
# 6 楼答案
Oracle's JDBC driver commits on close() by default.如果您打算编写多平台JDBC代码,就不应该依赖这种行为