程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 使用System.Transactions

使用System.Transactions

編輯:.NET實例教程

      在.Net framework 中 System.Transactions 簡化了事務的處理,最近做數據集成的項目,多次使用了事務處理,使用了System.Transactions ,下面我將把他的使用方法總結一下,希望對別人有幫助。

     一。如何使用

    System.Transactions 使用非常簡單,下面是使用的代碼

          DEMO 1

                 



using System;
using
 System.Collections.Generic;
using
 System.Text;
using
 System.Transactions;
using
 System.Data.SqlClIEnt;

namespace
 TestTransactions
...
{
    class
 Transactions
    ...
{
        private void
 UseTransactions()
        ...
{
            using (TransactionScope tran = new
 TransactionScope())
            ...
                using (SqlConnection conn = new SqlConnection("server=.;database=Northwind;uid=sa;pwd=sa"
))
                ...
{
                    string strInert = "insert into table1(name,passWord) values(''ilahsa'',''123456'')"
;
                    string strUp = "update table1 set passWord=''654321'' where name = ''ilahsa''"
;
                    SqlCommand cmd1 = new
 SqlCommand(conn, strInert);
                    cmd1.ExecuteNonQuery();
                    SqlCommand cmd2 = new
 SqlCommand(conn, strUp);
                    cmd2.ExecuteNonQuery();
                }

                tran.Complete();
            }
 
        }

    }
}

首先聲明一個TransactionScope  的實例,把需要事務處理的代碼放在Using的語句塊,這段代碼封裝了連個SQL 指令,只有其中的一個執行過程中發生異常,TransactionScope 對象會自動回滾事務,代碼正常執行的話, tran.Complete()語句提交了事務。DEMO1中使用了兩個Using 語句,代碼執行完畢會自動釋放資源(比較推薦這種方式),看到了嗎,使用 System.Data.SqlClIEnt處理事務是如此的簡單,只需幾行代碼就搞定了
二。事務的設置

TransactionScopeOptions 描述 Required 如果已經存在一個事務,那麼這個事務范圍將加入已有的事務。否則,它將創建自己的事務。 RequiresNew 這個事務范圍將創建自己的事務。 Suppress 如果處於當前活動事務范圍內,那麼這個事務范圍既不會加入氛圍事務 (ambIEnt transaction),也不會創建自己的事務。當部分代碼需要留在事務外部時,可以使用該選項。
        


使用TransactionScopeOptions可以改變TransactionScope的默認事務類型 (默認的事務類型是Required)。

使用方法

DEMO2



   using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew))
            ...
{
                using (SqlConnection conn1 = new
 SqlConnection(str))
                ...
{
                    SqlCommand cmd = new
 SqlCommand(conn1, strsql1);
                    cmd.ExecuteNonQuery();
                }

                using (SqlConnection conn2 = new SqlConnection(conn2))
                ...
{
                    SqlCommand cmd = new
 SqlCommand(conn2, strsql2);
                    cmd.ExecuteNonQuery();
                }

                ts.Complete();
            }

 

三。 什麼時候使用System.Transactions

        第一中情況是,你的數據庫支持輕型事務,何為輕型事務MSDN上有很明確的介紹,在這裡就不多說了,也就是你的數據庫是SQL Server 2005.

        第二種情況是你的事務中使用了分布式的數據庫系統。即在一個事務處理中使用了多個數據庫。使用System.Transactions也會使性能有很大的提升。

       如果數據庫是SQL Server  2000,而又只連接一個數據庫的話,使用ado.Net 的事務處理更有優勢。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved