首页 > 学院 > 开发设计 > 正文

ASP.NET开发过程中的事务处理

2019-11-17 03:07:17
字体:
来源:转载
供稿:网友

asp.net开发过程中的事务处理

今天重新看了一遍《asp.net高级程序设计第四版》的第七章,关于asp.net的事务处理这一块,之前看的时候由于工作中也没有用到它所以没怎么在意,不过真是应了那句话:温故而知新呀。

今天的内容不是很多,代码演示也不多,所以可以早早写完休息。

事务:事务可以理解为一种必须同时完成或全部失败的操作。书中的经典例子:账户转账,A账户与B账户之前必须A-100同时B+100,这个操作必须同时成功,只要有个失败两个步骤都需要回滚,这样的一个完整过程就可以称为一个【事务】。


整个小节讲解事务处理可以归纳为以下几点:

  • 存储过程实现事务:这是实现事务的一种比较好的方式。

语法:BEGIN TRANSACTION

成功:COMMIT

失败:ROLLBACK

下面是一个比较简单的是个例子主要是为了演示一下用法:

CREATE PROCEDURE myTransaction(@amount MONEY,---转账金额@countA INT,--账户A@countB INT--账户B)AS BEGIN TRANSACTION  ---这里是你自定义的SQL更新语句A   /*                  */  --@@ERROR始终是一个记录当前执行SQL错误信息的变量,每一个更新之后会重新自动置0  IF(@@ERROR>0)    ROLLBACK  ---这里是你自定义的SQL更新语句B  /*                  */  IF(@@ERROR>0)    ROLLBACK  ---全部更新已经执行完成   COMMIT   --更新事务状态  RETURN    
  • ADO.NET实现事务

语法:通过调用connection对象的 BeginTransaction()方法开始,该方法返回一个Transaction对象,用于管理事务。由于ADO.NET针对不同的数据库提供程序提供不同的ADO.NET对象,对应的事务对象类名也不一样如:SqlTransaction OledbTransaction OracleTransaction,这里就以SQL Server数据提供程序为例,提供一个标准例子,主要是演示用法:

成功:con.Commit();

失败:con.Rollback();

   SqlConnection con=new SqlConnection(strConnect);            SqlCommand cmd1 = new SqlCommand(strSQL1,con);            SqlCommand cmd2 = new SqlCommand(strSQL2, con);             SqlTransaction tran=null;            try            {                con.Open();                 tran = con.BeginTransaction();  //创建事务                                //将Cmd对象提交到事务中                cmd1.Transaction = tran;                cmd2.Transaction = tran;                //执行更新                cmd1.ExecuteNonQuery();                cmd2.ExecuteNonQuery();                //全部更新成功,刷新事务状态                tran.Commit();            }            catch            {                //更新失败事务回滚                tran.Rollback();            }            finally {                con.Close();            }

  • COM+实现事务:不过书中没有细节去讨论这一块。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表