2014-05-20 81 views
0

我的目的是在程序退出中途嘗試SQL回滾而不完成。在我的程序中有以下連接。但是,即使在中途退出時沒有設置任何con.commit,數據仍會寫入數據庫。我做了一個調試模式,它陷入異常並執行con.rollback();但其中沒有回滾。這讓我很困惑。SQL JDBC JDBC在自動提交關閉時提交

con = DriverManager.getConnection(value); 
con.setAutoCommit(false); 
try{ 
pstmt = con.prepareStatement("CREATE TABLE IF NOT EXISTS Test (Number varchar(255))") 
pstmt.execute(); 
pstmt = con.prepareStatement("INSERT INTO `Test` (Number) values (?)"); 
pstmt.setString(1,"1"); 
pstmt.executeUpdate(); 
}catch(Exception){ 
con.rollback(); 
} 
+0

對不起,我不明白嗎?你能舉一些例子嗎? – BeyondProgrammer

+0

您的代碼似乎不完整。 insert語句永遠不會運行,它會引發語法錯誤。這意味着將沒有工作完成。數據如何寫入。這似乎是一個更大的功能/程序的片段。你能告訴我們更多的代碼嗎? – Namphibian

+0

好吧,我剛纔給出的代碼是一個草稿,如果你想要一個完整的聲明,我剛剛添加。 – BeyondProgrammer

回答

1

它取決於DB,例如,在Oracle創建表...或任何DDL執行隱式提交之前,此提交之前的所有操作都無法回滾

+0

其不是oracle它的mysql,我標記爲 – BeyondProgrammer

+0

那麼插入語句呢? – mahesh