最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 编程开发 > asp教程

ASP程序实现数据库事务控制

日期:10-23    来源:中国设计秀    作者:cnwebshow.com

  在编程中,经常需要使用事务。所谓事务,就是一系列必须都成功的操作,只要有一步操作失败,所有其他的步骤也必须撤销。比如用asp开发一个网络硬盘系统,其用户注册部分要做的事有:4V4中国设计秀

  将用户信息记入数据库 4V4中国设计秀
  为用户开个文件夹用于存储 4V4中国设计秀
  初始化用户操作日志4V4中国设计秀

  这三步必须使用事务,否则万一磁盘操作失败,而没有撤销数据库操作,就会造成只能登陆而不能操作的“死用户”现象。4V4中国设计秀

  由于数据库系统特殊的发展历史,小至access,大到DB2,无不带有事务支持。因此上述步骤可以如下表示:4V4中国设计秀

On Error Resume Next4V4中国设计秀

  第一步:4V4中国设计秀

  在事务环境下把用户信息记入数据库4V4中国设计秀

  If Err Then 4V4中国设计秀
   关闭连接 4V4中国设计秀
   退出 4V4中国设计秀
  Else 4V4中国设计秀
   第二步:创建文件夹 4V4中国设计秀
  If Err Then 4V4中国设计秀
   回滚第一步数据库操作,退出 4V4中国设计秀
  Else 4V4中国设计秀
   第三步:在事务环境下操作日志数据库 4V4中国设计秀
  If Err Then 4V4中国设计秀
   回滚第一步操作,删除第二步建立的文件夹 4V4中国设计秀
   退出 4V4中国设计秀
  End If 4V4中国设计秀
 End If 4V4中国设计秀
End If 4V4中国设计秀
 提交第一步数据库操作的事务 4V4中国设计秀
 提交第二步数据库操作的事务 4V4中国设计秀
End 4V4中国设计秀

  每一步都需要进行判断,如果失败,还需要手工回滚前面多步操作,使程序变得复杂、难懂。如果今后更新了程序,增加其他步骤,还需要嵌套更多层的If...Else...End If,使程序流程更加复杂。4V4中国设计秀

  正确的解决办法是使用ASP的事务控制功能。IIS通过和MTS服务联系,可以控制多种支持事务的系统,当程序发出“失败”的信号时,所有支持事务的系统均将自动回滚,即使操作已经正式完成;对不支持事务的操作也提供了方便的手工回滚方式。上面的例子用ASP事务控制功能重写如下:4V4中国设计秀

<%@ TRANSACTION = Required %> 4V4中国设计秀
On Error Resume Next4V4中国设计秀

Set Conn=Server.CreateObject("ADODB.Connection") 4V4中国设计秀
Conn.Open .... 4V4中国设计秀
Conn.Execute "INSERT...." 4V4中国设计秀
Conn.Close 4V4中国设计秀
Set Conn=Nothing4V4中国设计秀

Set Conn2=Server.CreateObject("ADODB.Connection") 4V4中国设计秀
Conn2.Open .... 4V4中国设计秀
Conn2.Execute "INSERT...." 4V4中国设计秀
Conn2.Close 4V4中国设计秀
Set Conn2=Nothing4V4中国设计秀

Set fso=Server.CreateObject("Scripting.FilesystemObject") 4V4中国设计秀
FSO.CreateFolder "...."4V4中国设计秀

If Err Then 4V4中国设计秀
ObjectContext.SetAbort '通知所有支持事务的组件回滚,并运行手工回滚代码

本文引用地址:/bc/article_46536.html
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明