2012-08-16 70 views
0

假設我有下面的Java代碼片斷(其中類似的東西嵌在傳統的應用程序)Java事務 - 提交上康恩不

... 
try { 
    con.setAutoCommit(false); 
    updateSales = con.prepareStatement(updateString); 
    updateTotal = con.prepareStatement(updateStatement); 

    updateSales.setInt(1, e.getValue().intValue()); 
    updateSales.setString(2, e.getKey()); 
    updateSales.executeUpdate(); 
    updateTotal.setInt(1, e.getValue().intValue()); 
    updateTotal.setString(2, e.getKey()); 
    updateTotal.executeUpdate(); 
    con.commit(); 
} catch (SQLException e) { 
... 

假設這是連接到SQL Server 2005數據庫(與MS 2005驅動程序) - 是否有任何con.commit不會提交交易的原因?

+2

沒有例外拋出? – Keppil 2012-08-16 12:48:13

+1

你是如何確定它沒有首先提交的? – Durandal 2012-08-16 13:41:36

+0

沒有例外 - 數據庫中沒有更改註冊。 – hawkeye 2012-08-17 08:41:02

回答

1
  1. 您沒有向我們展示SQL語句,所以很難說。也許你有奇怪的條件,所以數據庫不能更新/插入/刪除任何記錄?

  2. 查看結果executeUpade()。它應該給你1個或更多,如果有任何記錄被改變

  3. 也許有阻止這種操作的數據庫的TRIGGER。是否有可能通過硬編碼值updateString更改某個SQL編輯器的數據庫?