ADO.NET 事务控制

在ADO.NET 中,可以使用Connection 和Transaction 对象来控制事务。若要执行事务,请执行下列操作: 

1.调用Connection 对象的BeginTransaction 方法来标记事务的开始。 

2.将Transaction 对象分配给要执行的Command的Transaction 属性。 

3.执行所需的命令。 

4.调用Transaction 对象的Commit 方法来完成事务,或调用Rollback 方法来取消事务。 当然ADO.NET事务处理有优点和缺点,运用起来看具体情况了。 

优点: – 简单性 – 和数据据事务差不多的快 – 独立于数据库,不同数据库的专有代码被隐藏了 

缺点: – 事务不能跨越多个数据库连接 – 事务执行在数据库连接层上,所以需要在事务过程中维护一个数据库连接。 

下边我们看一个例子,建立一个页面,同样简单,只需要一个按钮,然后编程: 

1 using System; 

2 using System.Data; 

3 using System.Configuration; 

4 using System.Collections; 

5 using System.Web; 

6 using System.Web.Security; 

7 using System.Web.UI;

 8 using System.Web.UI.WebControls; 

9 using System.Web.UI.WebControls.WebParts; 

10 using System.Web.UI.HtmlControls; 

11 using System.Data.SqlClient; 

12

 13 namespace WebApplication1 

14 { 

15 public partial class AdoAction : System.Web.UI.Page 

16 { 

17 protected void Page_Load( object sender, EventArgs e) 

18 { 

19 

20 } 

21 

22 protected void btn_Click( object sender, EventArgs e) 

23 { 

24 SqlConnection con = new SqlConnection(); 

25 con.ConnectionString = ConfigurationManager.ConnectionStrings[ " DSN " ].ConnectionString; 

26 con.Open(); 

27 // 启动一个事务。 

28 SqlTransaction myTran = con.BeginTransaction(); 

29 // 为事务创建一个命令,注意我们执行双条命令,第一次执行当然成功。我们再执行一次,失败。 

30 // 第三次我们改其中一个命令,另一个不改,这时候事务会报错,这就是事务机制。 

31 SqlCommand myCom = new SqlCommand(); 

32 myCom.Connection = con; 

33 myCom.Transaction = myTran; 

34 try 

35 { 

36 myCom.CommandText = " insert into SqlAction values ('测试2','111') " ; 

37 myCom.ExecuteNonQuery(); 

38 myCom.CommandText = " insert into SqlAction values ('测试3','111') " ; 

39 myCom.ExecuteNonQuery(); 

40 myTran.Commit(); 

41 Response.Write( " 成功执行 " ); 

42 

43 } 

44 catch (Exception Ex) 

45 { 

46 myTran.Rollback();

47 // 创建并且返回异常的错误信息 

48 Response.Write(Ex.ToString()); 

49 Response.Write( " 写入数据库失败 " ); 

50 }

51 finally

52 { 

53 con.Close();

54 } 

55 

56 }

57 

58 

59 } 

60 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值