gpt4 book ai didi

java - JDBC 确定 Activity 事务

转载 作者:行者123 更新时间:2023-11-30 11:12:55 26 4
gpt4 key购买 nike

是否可以通过 JDBC 确定我处于未提交的 Activity 事务中?我想确保在 Connection.close() 之前所有事务都已提交或回滚。

最佳答案

没有标准的 JDBC 方法可以满足您的需求。但是如果你想确保在 Connection.close() 之前所有事务都已提交/回滚,你可以这样做:

Connection conn = null;

try {
conn = ...;
conn.setAutoCommit(false);

// do stuff

// commit only if everything is successful
conn.commit();
}
catch (SomeException e) {
// log exceptions
}
finally {
if (conn != null) {
/* ALWAYS rollback before closing the connection
* if there's any caught/uncaught exception, the transaction will be rolled back
* if everything is successful / commit is successful, the rollback will have no effect
*/
try {
conn.rollback();
}
catch (SQLException e) {}

try {
conn.close();
}
catch (SQLException e) {}
}
}

这比仅在出现异常(在 catch block 中)时回滚要好,因为如果有任何未捕获的异常:

  • rollback() 不会被调用
  • Connection.close() 将在存在 Activity 事务时调用, Activity 事务发生的情况是特定于实现的。参见 Bogdan Calmac's answer .

关于java - JDBC 确定 Activity 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26652612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com