如果退出应用程序,如何使用Java回滚数据
我正在创建一个Java独立应用程序,它有多个屏幕 我正在执行许多由许多DML语句组成的存储过程 一切正常。但问题是,如果用户在中间退出应用程序,我应该能够回滚所有存储过程中所修改的数据。如果退出应用程序,如何使用Java回滚数据,java,mysql,stored-procedures,jdbc,rollback,Java,Mysql,Stored Procedures,Jdbc,Rollback,我正在创建一个Java独立应用程序,它有多个屏幕 我正在执行许多由许多DML语句组成的存储过程 一切正常。但问题是,如果用户在中间退出应用程序,我应该能够回滚所有存储过程中所修改的数据。 谁能帮我回滚数据吗。提前谢谢 您必须关闭“自动提交”,并执行自己的提交/回滚: try (Connection conn = DriverManager.getConnection(url)) { conn.setAutoCommit(false); try { // do wo
谁能帮我回滚数据吗。提前谢谢 您必须关闭“自动提交”,并执行自己的提交/回滚:
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
try {
// do work
conn.commit();
} finally {
conn.rollback();
}
}
如果try
块正常完成,则提交所有工作。若“DoWork”抛出异常,则所有内容都将回滚
在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();
}
}
这取决于你的设计。您是否在每笔成功交易后都提交佣金?