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
内容版权声明:除非注明,否则皆为本站原创文章。