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中进行控制即可,非常方便,程序员可以专注于过程编写而不是书写纠错代码。
  • 相关阅读:
    Java序列化原理
    分库分表
    数据库索引
    监听TCP端口号:从简单Socket到NIO到Netty
    如何保证缓存与数据库的双写一致性
    代理模式:静态代理、JDK动态代理、Cglib动态代理
    Redis发布订阅(Pub-Sub)模式
    Redis分片机制(Sharding)
    Redis高可用性:主从、哨兵和集群
    Redis简介
  • 原文地址:https://www.cnblogs.com/shf/p/431533.html
Copyright © 2011-2022 走看看