zoukankan      html  css  js  c++  java
  • ASP中使用事务控制

    ASP的事务控制功能。IIS通过和MTS服务联系,可以控制多种支持事务的系统,当程序发出“失败”的信号时,所有支持事务的系统均将自动回滚,即使操作已经正式完成;对不支持事务的操作也提供了方便的手工回滚方式:

    <%@ TRANSACTION = Required %>
    On Error Resume Next

    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open ....
    Conn.Execute "INSERT...."
    Conn.Close
    Set Conn=Nothing

    Set Conn2=Server.CreateObject("ADODB.Connection")
    Conn2.Open ....
    Conn2.Execute "INSERT...."
    Conn2.Close
    Set Conn2=Nothing

    Set FSO=Server.CreateObject("Scripting.FilesystemObject")
    FSO.CreateFolder "...."

    If Err Then
    ObjectContext.SetAbort '通知所有支持事务的组件回滚,并运行手工回滚代码
    Else
    ObjectContext.SetComplete
    End If
    Set FSO=Nothing

    Sub OnTransactionAbort
    Response.Write "错误"
    FSO.DeleteFile Server.Mappath("a.txt") 'FSO的手工回滚——删除文件夹
    End Sub
    Sub OnTransactionCommit
    Response.Write "胜利完成任务"
    End Sub
    %>

    第一行的<%@ TRANSACTION = Required %>表示这一页ASP文件需要MTS的事务支持。中间的各个操作都按普通顺序书写,而不用考虑回滚问题。在程序最后判断是否有错误。如果有,调用ObjectContext的SetAbort方法,IIS会通过MTS服务通知所有支持事务的组件回滚(主要是数据库),并且运行Sub OnTransactionAbort对不支持事务的操作手工回滚;如果没有发生错误,调用ObjectContext的SetComplete方法,则会运行Sub OnTransactionCommit来显示成功的消息。

    整个ASP程序不需要为判断错误和回滚操作书写多余的代码,只须在最后进行判断,即使今后增加了多步操作,也只需要在Sub OnTransactionAbort中进行控制即可,非常方便,程序员可以专注于过程编写而不是书写纠错代码。
  • 相关阅读:
    最长回文子串(马拉车)
    ubutun 启动/停止/重启MySQL数据库
    臭大佬_LZW
    Beauty Contest(求凸包最大直径)
    Smallest Bounding Rectangle(最小面积外接矩形)
    Triangle(求凸包最大内接三角形)
    P4196 [CQOI2006]凸多边形
    P4724 【模板】三维凸包(简洁)
    P2600 [ZJOI2008]瞭望塔【半平面交】
    退役记
  • 原文地址:https://www.cnblogs.com/shf/p/431533.html
Copyright © 2011-2022 走看看