ADO.NET 事务控制

来源:互联网 发布:智能电视阿里云系统 编辑:程序博客网 时间:2024/05/22 00:42

在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 }

原创粉丝点击