【问题标题】:How to Rollback the data by using Java if we Exit the application如果我们退出应用程序,如何使用 Java 回滚数据
【发布时间】:2015-09-27 00:01:06
【问题描述】:

我正在创建一个具有多个屏幕的 Java 独立应用程序。

我正在执行许多由许多 DML 语句组成的存储过程。

一切正常。但问题是,如果用户在中间退出应用程序,我应该能够回滚我通过所有存储过程修改过的数据。

谁能帮我回滚数据。提前致谢。

【问题讨论】:

  • 这取决于您的设计。您是否在每次成功交易后都做出承诺?

标签: java mysql stored-procedures jdbc rollback


【解决方案1】:

您必须关闭自动提交,然后自己进行提交/回滚:

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();
    }
}

【讨论】:

    猜你喜欢
    • 2022-12-19
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2011-07-29
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多