asp内置对象 ObjectContext 事务管理 详解
2018-09-06 12:26
asp内置对象ObjectContext详解
您可以使用ObjectContext对象提交或放弃一项由MicrosoftTransactionServer(MTS)管理的事务,它由ASP页包含的脚本初始化。
ASP包含@TRANSACTION指令时,该页会在事务中运行,直到事务成功或失败后才会终止。
语法
方法
SetCompleteSetComplete方法声明脚本不了解事务未完成的原因。如果事务中的所有组件都调用SetComplete,事务将完成。
SetAbortSetAbort方法声明被脚本初始化的事务未完成,无法更新源。
事件
OnTransactionCommit
OnTransactionAbort
注释
ObjectContext实现MTSObjectContext对象的两种方法。SetAbort方法完全终止事务。这样,MTS不更新在第一阶段联系的源。事务终止时,将处理脚本的OnTransactionAbort事件。
调用SetComplete方法并不一定意味着事务已完成。只有脚本调用的所有事务组件都调用了SetComplete,事务才能完成。在大多数实例中,如果结束处理时未调用SetAbort,脚本通常被假定为完成的,所以不一定要在脚本内调用SetComplete。
ObjectContext展示了SetAbort和SetComplete以外的六种方法。这些方法可用于脚本调用的组件,但不能直接用于ASP脚本。
示例
这里示范使用SetAbort和SetCommit的方法。Sales.htm文件获取处理销售请求所需的数据。第二个文件——SalesVerify.asp中的脚本使用两个对象——Inventory和Sales处理销售。如果Inventory返回了错误代码表示供销售的存货不足,就会调用SetAbort。如果Inventory对象没有返回错误代码,将会调用SetComplete处理销售请求。
Sales.htm
<!DOCTYPEHTMLPUBLIC-//IETF//DTDHTML//EN>
<HTML>
<HEAD>
<TITLE>SalesOrder</TITLE>
</HEAD>
<BODYBGCOLOR=#FFFFFF><FONTFACE=ARIAL,HELVETICA>
<H2>SalesOrderForm</H2>
<FORMMETHOD=POSTACTION=SalesVerify.asp>
<P>Pleaseentertheproductcode,quantity,andyouraccountnumber.
<INPUTTYPE=TEXTNAME=QuantityToBuy>
<INPUTTYPE=TEXTNAME=ProductCode>
<INPUTTYPE=TEXTNAME=AccountIn>
<P>
<INPUTTYPE=SUBMIT>
</FONT>
</BODY>
</HTML>
SalesVerify.asp文件
<%@Transaction=Required%>
<%
SetCurrentSales=Server.CreateObject(Mycomp.Sales)
CheckQuantity=Request(QuantityToBuy)
CheckProduct=Request(ProductCode)
QuantityStatus=CurrentQOH.CheckQOH(CheckQuantity,CheckProduct)
IfQuantityStatus=None
ObjectContext.SetAbort
Response.WriteSorry,thereisnotsufficientquantityonhandtoprocessyoursale.
Else
ObjectContext.SetComplete
Account=Request(AccountIn)
Saleupdate=CurrentSales.PostIt(AccountIn)
EndIf
%>
下一篇:水印测试(重新测试)
文章标题:asp内置对象 ObjectContext 事务管理 详解
文章链接:http://soscw.com/essay/10325.html