2012-12-06 43 views
0

我正在使用JDBC,但遇到了一些回滾和保存點問題。 我不明白爲什麼這段代碼實際上不會回滾到保存點,並且插入的記錄仍然存在。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(); 
} 

在此先感謝。

+0

您使用的是哪個數據庫? –

回答

0

因爲Savepoint只是DBMS的功能。我認爲這可能是你的數據庫引擎的問題。

您可以檢查this的問題。