-1
我正在创建一个具有多个屏幕的Java独立应用程序。如何退出应用程序使用Java回滚数据
我正在执行许多由多个DML语句组成的存储过程。
所有工作正常。但问题是,如果用户在中间退出应用程序,我应该可以通过所有存储过程对ROLLBACK数据进行修改。
任何人都可以请帮我回滚数据。提前致谢。
我正在创建一个具有多个屏幕的Java独立应用程序。如何退出应用程序使用Java回滚数据
我正在执行许多由多个DML语句组成的存储过程。
所有工作正常。但问题是,如果用户在中间退出应用程序,我应该可以通过所有存储过程对ROLLBACK数据进行修改。
任何人都可以请帮我回滚数据。提前致谢。
你必须关闭自动提交了,做你自己提交/回滚:
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
try {
// do work
conn.commit();
} finally {
conn.rollback();
}
}
如果try
块正常完成,所有的工作承诺。如果“做功”会抛出异常,则所有内容都会回滚。
在commit()
之后,finally块仍然会调用rollback()
,但由于在commit()
之后什么也没有发生,所以它是无操作的。如果你不喜欢,你可以这样做:
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
boolean commit = false;
try {
// do work
commit = true;
} finally {
if (commit)
conn.commit();
else
conn.rollback();
}
}
这取决于你的设计。你是否在每一次成功交易之后做出承诺? – user2953113