標籤:style blog color io os ar for 資料 2014
1 var conStr = "server=localhost;database=Data;user=sa;pwd=123456"; 2 using (var connection = new SqlConnection(conStr)) 3 { 4 connection.Open(); 5 var sql = 6 string.Format( 7 "update dbo.AutoStationData set Temperture={0} where StationNum=58365 and DateTime=‘{1}‘", 8.5, 8 new DateTime(2014, 01, 17, 09, 52, 00, 000));//可以正常執行的sql語句 9 10 var sql2 = string.Format(11 "update dbo.AutoStationData set Temperture={0} where StationNu=98801 and DateTime=‘{1}‘", 8.1,12 new DateTime(2014, 01, 17, 09, 52, 00, 000)); //不可以正常執行的sql語句 不存在欄位StationNu13 using (var command = new SqlCommand(sql,connection))14 {15 var transation = connection.BeginTransaction();//建立事務16 try17 {18 command.Transaction = transation;19 20 command.CommandText = sql;21 command.ExecuteNonQuery();22 23 command.CommandText = sql2;24 command.ExecuteNonQuery();25 26 transation.Commit();27 }28 catch (Exception e1)29 {30 try31 {32 33 transation.Rollback();34 }35 catch (Exception e2)36 {37 38 Console.Write(e2.Message);39 }40 41 }42 43 }44 }
寫一個可以正常執行的sql語句sql,一個錯誤的sql語句sql2。執行完21行代碼,在資料庫中查詢全表,會顯示正在查詢...,直接執行後面的代碼,由於sql2不能正確執行,跳轉到catch,執行復原,21行修改的欄位值還原。資料庫這才能執行全表查詢 正在查詢....變成查詢已成功執行。從執行第一個sql語句開始,知道提交事務成功,或者復原成功這段時間這個事務獨佔這一張表,也體現了事務的原子性。
Sql Server事務簡單用法