利用ASP实现事务处理的方法

发布时间:2007年03月07日      浏览次数:1284 次
务不
能跨越多个ASP页,如果一个事务处理需要来自多个组件的对象,则须将对这些对象的操作组合在一个ASP页中。
首先需要在页首添加指令@TRANSACTION,将一个ASP页面声明为事务性。@TRANSACTION指令必须在一页中的第一行,否则将
产生错误。当页面中ASP脚本处理结束时,当前事务即告结束。
<%@ TRANSACTION=Required Language=
VB Script %>
//事务执行成功触发事件
<% Sub OnTransactionCommit() %>
<% response.Redirect RegisterOk.html %>
<% End Sub %>
//事物执行失败触发事件
<% Sub OnTransactionAbort() %>
<% response.Redirect RegisterFail.html %>
<% End Sub %>
<% sqlText=“Insert into USER(userName,userPasswd) values(‘” %>
<% sqlText=sqlText & request(“usrName”) & “’,‘” &request(“usrPasswd”)&“’) ” %>
<% conn.execute(sqlText) %>
<% if conn.Errors.Count>0 then %>
<% conn.Errors.Clear %>
<% ObjectContext.SetAbort %>
<% end if %>
<% sqlText=“Insert into USERDOC(userName,Age,Sex,PhoneNumber,Address) ”%>
<% sqlText=sqlText & “values(‘” & request
(“usrName”)& “’, ” & request(“Age”) %>
<% sqlText=sqlText & “,’” & request
(“PhoneNum”) & “’,‘” %>
<% sqlText=sqlText & request(“Address”) & “’) ” %>
<% conn.execute(sqlText) %>
<% if conn.Errors.Count>0 then %>
<% conn.Errors.Clear %>
<% ObjectContext.SetAbort %>
<% end if %>
<% ObjectContext.SetComplete %>
方案比较
从灵活的角度考虑,选择采用ASP数据库组件的方法具有一定的优势:既可以选用ADO数据库组件完成事务处理,同时还可
以根据实际需要,定制自己的数据库组件(只要满足ASP组件编写规范即可)。如果从数据库事务处理的可靠性等角度考
虑,则采用数据库内部的事务处理存储过程更好。这样可以直接利用数据库事务机制完成应用程序的逻辑事务处理,安全
可靠,并且减少了Web服务器与数据库服务器之间的数据交互。这一点对分布式数据库系统尤为重要。采用MTS组件的事务
处理方法的优势在于:由MTS服务器直接控制和管理组件(在MTS中注册的组件)操作的完成和撤消,具有良好的扩展空间
和应用前景,可以充分发挥MTS的技术优势,增强网络应用的容错性能,提高IIS Web服务器的动态性能。
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!