Sql Server事务简单用法

 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语句 不存在字段StationNu
13                 using (var command = new SqlCommand(sql,connection))
14                 {
15                     var transation = connection.BeginTransaction();//创建事务
16                     try
17                     {
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                         try
31                         {
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语句开始,知道提交事务成功,或者回滚成功这段时间这个事务独占这一张表,也体现了事务的原子性。  

posted @ 2014-09-18 20:08  李辉健  阅读(796)  评论(0编辑  收藏  举报