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