1. 程式人生 > >SqlTransaction——事務詳解

SqlTransaction——事務詳解

轉載:http://www.cnblogs.com/yank/archive/2008/07/20/1246896.html

事務處理基本原理      
      事務是將一系列操作作為一個單元執行,要麼成功,要麼失敗,回滾到最初狀態。在事務處理術語中,事務要麼提交,要麼中止。若要提交事務,所有參與者都必須保證對資料的任何更改是永久的。不論系統崩潰或是發生其他無法預料的事件,更改都必須是持久的。只要有一個參與者無法做出此保證,整個事務就會失敗。事務範圍內的所有資料更改將回滾到特定設定點。  

           
      事務將多個操作緊密聯絡到一起,這樣就能保證有聯絡的兩種操作的一致性、以及資料的完整性。舉個簡單例子:公司的員工資訊管理系統,現在要錄入資料,員工資訊系統假設只有部門、員工資訊兩張表,其中員工資訊表中有標識部門的欄位。在你錄入資訊的時候首先你得錄入部門資訊,再錄入員工資訊。具體實現程式碼: 

private static void ExecuteSqlTransaction(string connectionString)

     {

       using (SqlConnection connection = new SqlConnection(connectionString))

        {
                connection.Open();
                SqlCommand command = connection.CreateCommand();
                SqlTransaction transaction;  
                transaction = connection.BeginTransaction("SampleTransaction");
                command.Connection = connection;
                command.Transaction = transaction;
                try
                {
                    command.CommandText ="Insert into Department (ID, Name) VALUES (1, '工程部')";

                    command.ExecuteNonQuery();

                    command.CommandText =

                        "Insert into Users(ID, Name,DepartmentID) VALUES (1, 'xyz',1)";

                    command.ExecuteNonQuery();

                    transaction.Commit();

                }

                catch (Exception ex)

                {

                   transaction.Rollback();

                }

            }

        }