.NET的事务处理

.NET的事务处理有三种方法:

1,直接写入SQL。

   先写SQL文,

  1. //存储过程:
  2. create procedure [SqlAcTran] As
  3. begin tran
  4. declare @UserInfoError int 
  5. delete from [SqlAction] where username='测试'
  6. select @UserInfoError =@@error
  7. if(@UserInfoError =0)
  8. commit tran
  9. else
  10. rollback tran
  11. go

后台代码:

  1. protected void btn_Click(object sender, EventArgs e)
  2.         {
  3. //声明一个连接
  4.             SqlConnection con = new SqlConnection();
  5.             con.ConnectionString=ConfigurationManager.ConnectionStrings["DSN"].ConnectionString;
  6.             con.Open();
  7.             SqlCommand com = new SqlCommand();
  8.             com.Connection = con;
  9.             com.CommandType = CommandType.StoredProcedure;
  10. //调用存储过程
  11.             com.CommandText = "SqlAcTran";
  12. //执行
  13.             com.ExecuteNonQuery();
  14.             con.Close();
  15.         }

2,Ado.Net事务处理。

后台代码:

  1. protected void btn_Click(object sender, EventArgs e)
  2.         {
  3.             SqlConnection con = new SqlConnection();
  4.             con.ConnectionString=ConfigurationManager.ConnectionStrings["DSN"].ConnectionString;
  5.             con.Open();
  6.             //1:调用Connection 对象的BeginTransaction 方法来标记事务的开始。
  7.             //启动一个事务。
  8.             SqlTransaction myTran = con.BeginTransaction();
  9.             //为事务创建一个命令,注意我们执行双条命令,第一次执行当然成功。我们再执行一次,失败。
  10.             //第三次我们改其中一个命令,另一个不改,这时候事务会报错,这就是事务机制。
  11.             SqlCommand myCom = new SqlCommand();
  12.             myCom.Connection = con;
  13.             //2:将Transaction 对象分配给要执行的Command的Transaction 属性。
  14.             myCom.Transaction = myTran;
  15.             try
  16.             {
  17.                 myCom.CommandText = "insert into SqlAction values ('测试2','111')";
  18.                 //3:执行所需的命令。
  19.                 myCom.ExecuteNonQuery();
  20.                 myCom.CommandText = "insert into SqlAction values ('测试3','111')";
  21.                 myCom.ExecuteNonQuery();
  22.                 myTran.Commit();
  23.                 Response.Write("成功执行");
  24.             }
  25.             catch (Exception Ex)
  26.             {
  27.                 myTran.Rollback();
  28.                 //创建并且返回异常的错误信息
  29.                 Response.Write(Ex.ToString());
  30.                 Response.Write("写入数据库失败");
  31.             }
  32.             finally
  33.             {
  34.                 con.Close();
  35.             }
  36.         }

当然ADO.NET事务处理有优点和缺点,运用起来看具体情况了。
• 优点:
– 简单性
– 和数据据事务差不多的快
– 独立于数据库,不同数据库的专有代码被隐藏了
• 缺点:
– 事务不能跨越多个数据库连接
– 事务执行在数据库连接层上,所以需要在事务过程中维护一个数据库连接。

3,COM+事务(不大懂),

一般的数据库事务控制要求事务里所做的操作必须在同一个数据库内,这样在出现错误的时候才能回滚(RollBack)到初始状态。这就存在一个问题,在分布式应用程序中,我们往往需要同时操作多个数据库,使用数据库本身的事务处理,很难满足程序对事务控制的要求。在COM+中,提供了完整的事务服务,我们可以利用它来完成在分布式应用程序中的事务控制。

http://www.cnblogs.com/yeemio/archive/2007/08/28/873355.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值