Asp事务处理(2)


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中进行控制即可,非常方便,程序员可以专注于过程编写而不是书写纠错代码。 

  其实ASP还提供了许多更有用的功能,等着我们使用,千万不要以为ASP使用脚本语言,功能就一定弱。

以下是引用片段:
<%  
'asp事务处理。  
'测试数据库为sql server,服务器为本机,数据库名为test,表名为a,两个字段id(int)主键标识,num(int)  
set conn=server.CreateObject("adodb.connection")   
strConn="provider=sqloledb.1;persist security info=false;uid=sa;pwd=sa;Initial Catalog=test;Data Source=."  
conn.Open strConn  
'以上代码建立数据库连接  
conn.BeginTrans '事务开始  
strSql1="update a set num=1000 where id=24" '第一个sql语句为update。(语法正确)  
strSql2="insert into a(num) values('a')" '第二个sql语句为错误的sql语句  
strSql3="insert into a(num) values(33333)" '第三个sql语句为正确的sql语句   

call conn.execute(strSql1)   
call conn.execute(strSql2)   
call conn.execute(strSql3)   

if conn.Errors.Count=0 then   

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3622.html