共用方式為


瞭解交易

交易是併入邏輯工作單位的作業群組。它們是用來控制及維護交易中每個動作的一致性與完整性,儘管系統可能會發生錯誤。

利用 Microsoft SQL Server 2005 JDBC Driver,交易可以是本機或分散式。交易也可使用隔離等級。如需 JDBC 驅動程式所支援之隔離等級的詳細資訊,請參閱<瞭解隔離等級>。

瞭解本機交易

當交易為單一階段交易時,便會視為本機交易,該交易是由資料庫直接處理。JDBC 驅動程式使用 SQLServerConnection 類別的各種方法以支援本機交易,包括 setAutoCommitcommitrollback。本機交易通常是由應用程式明確管理,或由 J2EE 應用程式伺服器自動管理。

下列範例會執行 try 區塊中由二段個別陳述式組成的本機交易。這些陳述式是針對 SQL Server 2005 AdventureWorks 範例資料庫中的 Production.ScrapReason 資料表執行,若沒有發生任何例外狀況,便會認可它們。如果發生例外狀況,catch 區塊中的程式碼便會回復交易。

public static void executeTransaction(Connection con) {
   try {
      //Switch to manual transaction mode by setting
      //autocommit to false. Note that this starts the first 
      //manual transaction.
      con.setAutoCommit(false);
      Statement stmt = con.createStatement();
      stmt.executeUpdate("INSERT INTO Production.ScrapReason(Name) VALUES('Wrong size')");
      stmt.executeUpdate("INSERT INTO Production.ScrapReason(Name) VALUES('Wrong color')");
      con.commit(); //This commits the transaction and starts a new one.
      stmt.close(); //This turns off the transaction.
      System.out.println("Transaction succeeded. Both records were written to the database.");
   }
   catch (SQLException ex) {
      ex.printStackTrace();
      try {
         con.rollback();
         System.out.println("Transaction failed. No records were written to the database.");
      }
      catch (SQLException se) {
         se.printStackTrace();
      }
   }
}

使用分散式交易

分散式交易會在二個或以上的網路資料庫上更新資料,並同時保留重要的不可部份完成、一致、獨立且持久的 (ACID) 交易處理屬性。分散式交易支援已新增至 JDBC 2.0 Optional API 規格中的 JDBC API。分散式交易的管理通常是由 J2EE 應用程式伺服器環境中的 Java Transaction Service (JTS) 交易管理員自動執行。然而,Microsoft SQL Server 2005 JDBC Driver 支援任何 Java Transaction API (JTA) 相容之交易管理員下的分散式交易。

JDBC 驅動程式與 Microsoft 分散式交易協調器 (MS DTC) 密切整合,以提供 SQL Server 2000 與 SQL Server 2005 實際的分散式交易支援。MS DTC 是一種由 Microsoft Windows 系統的 Microsoft 所提供的分散式交易機制。MS DTC 使用來自 Microsoft 經過驗證的交易處理技術以支援 XA 功能,如完整的二階段分散式認可通訊協定,以及分散式交易的復原。

如需如何使用分散式交易的詳細資訊,請參閱<瞭解 XA 交易>。

另請參閱

其他資源

以 JDBC 驅動程式執行交易