`
daojun.zeng
  • 浏览: 10563 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

事务处理详解与在ASP中的应用

    博客分类:
  • .NET
阅读更多
事务处理的定义

  在做WEB开发时,不可避免的需对数据库进行查询、插入、更新、删除等操作,有时操作的一条数据,有时操作的是一组连续的指令集合,这时我们就须对数据操作进行事务处理,所谓事务,就是指一次逻辑单元操作组合,简单的说就是把一组操作,当作一个整体来处理。

  例如:要在数据库中需更新1000条数据,在更新过程中假设其中的一条数据发生错误,则所有已更新的数据都恢复成未更新时的初始状态。只有1000条记录全部更新成功之后,才最终确认更新。

  目前大多数事务处理是针对数据库操作概念,但事实上事务的定义范围是非常广的。


  为何要使用事务处理

  例如:在一个电子商务交易网站上,A公司需购买B公司的产品,当通过网站上的交易系统进行网上交易时对数据库需进行至少下面两个操作步聚:

1、从A用户的帐号上扣除相应的金额 http://www.mscto.com

2、将扣除的金额转到B用户的帐号上 软件开发网

  以上两个步聚须全部操作成功,整个交易才算完成,如果在第1步操作完成过程后,在进行第2步操作时发生错误,则整个事务处理失败,第1步操作取消,数据回滚到交易前的状态。



  此操作假如未使用事务处理机制则在第1步操作完成后,扣除了A用户帐号上的金额,由于发生错误,第2步操作却未能完成,交易金额未能到达B用户的帐号上。则此次交易出现,A付了钱,B并未收到,以此次交易失败告终。
事务处理机制在此过程中相当于一个保险机制,它能确保整个事件在没有错误的状态下进行,一旦发生错误,事务处理允许你回到最初始的状态,保证了数据完整。
诸如此类的例子生活中很多,比如银行取款、转账等一样,大家慢慢体会吧!当然,在只对数据库进行单次操作时,事务处理是没有实际意义的。 软件开发网

  下面我们来介绍下ASP中的事务处理机制



  方法一 利用ASP内置ADO组件中的Connection对象
在ASP中,Connection对象有三个方法来实现事务处理机制:BeginTrans,CommitTrans和RollbackTrans。



  在ASP中,当一个事务处理开始执行时,其后一直到事务处理结束之前,所有的一切程序都是暂时的,必须等到用CommitTrans方法结束事务处理之后,才能确定其中操作的有效性,如果这过程中发生错误,则可以用RollbackTrans方法取消事务处理,返回未执行程序之前。
具体程序如下:
  <%
  dim conn,sql
  set conn=server.createobject(\"adodb.connection\")
  conn.open\"driver={Microsoft access driver (*.mdb)};dbq=\" &   server.mappath(\"dataname.mdb\") '连接数据库
  conn.BeginTrans '事务处理开始
  sql=\"delete * from user where name='\" & yourname & \"'\"
  conn.execute(sql) '删除姓名为yourname的记录
  sql=\"insert into user(name,pass,sex)   values('yourname_2','111111','Boy')\"
  conn.execute(sql) '添加一条新记录
  if conn.errors.count=0 then
conn.CommitTrans '判断是否有错误发生,没有则提交CommitTrans方法结束             事务处理,完成以上程序
  else



conn.RollbackTrans '如果发生错误,则用RollbackTrans方法取消事务处理,             以上程序无效
  end if
  conn.close
  set conn=nothing
  %>


  方法二 利用数据库系统内部的事务处理机制


  通过在数据库服务器中编写包含事务的存储过程,完成对数据操作的事务处理。同时,利用ADO组件调用存储过程,还可以根据存储过程的返回代码判断事务处理是否执行成功。

软件开发网


  方法三 利用MTS(Microsoft Transaction Server)组件的事务处理机制实现事务处理需要注意的是,这种机制下的事务不能跨越多个ASP页,如果一个事务处理需要来自多个组件的对象,则须将对这些对象的操作组合在一个ASP页中。


事务处理能保证数据库记录统一性与完整性,因此在许多项目中都会采取事务处理机制来避免错误的发生。建议大家以后在做开发时,牵涉到对数据库进行多个单元操作时,起用事务处理机制加以处理,确保整个处理过程没有错误发生。
分享到:
评论

相关推荐

    ASP.NET 2.0网络开发详解 源代码 和Net电子书

    《ASP.NET 2.0网络开发详解》实例源代码 和部分电子书 1.源文件的运行环境  操作系统:Windows 2000及其以上版本  开发环境:Microsoft Visual Studio 2005及其以上版本  数据库:SQL Server 2005及其以上...

    asp.net知识库

    在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...

    ASP.NET Core实现单体程序的事件发布/订阅详解

    在微服务架构中,事件发布/订阅有非常多的应用场景。今天我给大家分享一个基于ASP.NET Core的单体程序使用事件发布/订阅的例子,针对分布式项目的事件发布/订阅比较复杂,难点是事务处理,后续我会另写一篇博文来...

    Windows系统进程详解

    这个进程是作为单线程运行在每个处理器上,并在系统不处理其他线程的时候分派处理器的时间。 mstask.exe 这个进程是不可以从任务管理器中关掉的。 这是一个任务调度服务,负责用户事先决定在某一时间运行的任务的...

    Delphi6分布式开发

    10.1.1 在 delphi 6中创建应用服务器 10.1. 2 在delphi 6中创建客户程序 10.1.3 与应用服务器链接 10.1.4 调用服务器上的接口 10.1.5 在客户端纠错 10. 1.6 更新数据 10.2 midas多层应用程序的开发...

    亮剑.NET深入体验与实战精要3

    读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集实用性、思想性、趣味性于一体,内容共分为技术基础总结、系统架构设计思想及项目实战解析三部分,随书所附光盘收录大量实例...

    亮剑.NET深入体验与实战精要2

    读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集实用性、思想性、趣味性于一体,内容共分为技术基础总结、系统架构设计思想及项目实战解析三部分,随书所附光盘收录大量实例...

Global site tag (gtag.js) - Google Analytics