JDBC保存点不回滚

时间:2012-12-06 01:27:57

标签: java jdbc rollback

我正在使用JDBC但是我在回滚和保存点方面遇到了一些问题。 我无法理解为什么这段代码实际上没有回滚到保存点并且插入的记录仍然存在。

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

    sp = conn.setSavepoint();
    stmt.executeUpdate("INSERT INTO test(id) VALUES(" + args[0] + ")");

    if(true)  {
        conn.rollback(sp);
        System.out.println("rollback");
    }
} catch (SQLException ex)  {
    // handle any errors
    System.out.println("SQLException: " + ex.getMessage());
    System.out.println("SQLState: " + ex.getSQLState());
    System.out.println("VendorError: " + ex.getErrorCode());

    System.out.println("rollback");
    conn.rollback(sp);
} finally  {
    conn.commit();
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

因为Savepoint只是DBMS的功能。我认为这可能是您的数据库引擎的问题。

您可以查看this问题。