SQLServer事務在C#當中的應用


1:事務是什么        

   事務指的是一系列SQL操作的邏輯工作單元,,要么完全地執行,要么完全地不執行。

  一個邏輯工作單元必須有4個屬性原子性(Atomic)一致性(Consistent)隔離型(Isolated)持久性(Durable),簡稱為ACID

2:在c#中怎么簡單實現事務

在c#實現中實現數據庫的事務其實並不難,但是我們要知道為什么使用數據庫的事務,我們在實際業務場景中可能會遇到這樣的一種情況:例如我們需要在一張數據庫中插入兩條數據,有的時候會出現第一條數據插入成功,但是第二條數據並未插入成功的情況,在這種業務情況下,我們不可能只保留第一條數據而忽略失敗的第二條數據,因此,在這種情況下引入數據庫的事務機制,就是為了讓這組操作要么同時執行,要么同時不執行。

首先定義一個數據庫連接並且打開,這里例子舉的是SQL數據庫,代碼如下

  string conn = Config.sqlTransactionString;
  SqlConnection myConnection = new SqlConnection(conn);
  myConnection.Open();

接着通過數據庫連接對象啟動業務並為事務創建一個命令

 //啟動一個事務
 SqlTransaction myTrans = myConnection.BeginTransaction();
 //為事務創建一個命令
 SqlCommand myCommand = new SqlCommand();
 myCommand.Connection = myConnection;
 myCommand.Transaction = myTrans;

創建完事務之后,我們就開始執行相應的SQL數據庫操作

    try
    {
       //插入兩條ID相同的數據,必定會引發異常,以此來試驗事務的用法
        command.CommandText = "insert into student2(Id,Name) values (100,'數據99')";
        command.ExecuteNonQuery();
        command.CommandText = "insert into student2(Id,Name) values (100,'數據100')";
        command.ExecuteNonQuery();
        myTrans.Commit();     //事務提交      
    }
    catch (Exception ex)
    {
        myTrans.Rollback();  //遇到錯誤,回滾
    }

至此,一個簡單的c#事務就已經完成了。

備注:數據庫表:student2,只有兩個字段:Id和Name

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM