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