在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 }
ADO.NET 事务控制
最新推荐文章于 2023-07-19 21:48:56 发布