利用 transaction 在 ASP 中使用事务-ObjectContext

作者:vkvi 来源:ITPOW(原创) 日期:2009-2-12

ObjectContext 是个全局对象,直接使用,把它用在事务里,有时也有些用。

<%@ transaction=required %>
<%option explicit%>
<%
on error resume next

dim conn
set conn = Server.CreateObject("ADODB.Connection")
'conn.open "Provider=Microsoft.jet.oledb.4.0;data source=" & Server.MapPath("Trans.mdb") '事务时不能使用此驱动
conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & Server.MapPath("Trans.mdb")

Sub OnTransactionCommit
    Response.Write("ok.")
End Sub

Sub OnTransactionAbort
    Response.Write("error:" & err.Description)
End Sub

conn.BeginTrans
conn.Execute "update tbl set fld=fld+2 where ID=1"
conn.Execute "update tbl set fld=fld+1 where ID=2"
if err.number = 0 then
    conn.CommitTrans
    conn.close()
    set conn = nothing
    ObjectContext.SetComplete
else
    conn.RollbackTrans
    conn.close()
    set conn = nothing
    ObjectContext.SetAbort
end if
%>
  • 调用 SetAbort 时,OnTransactionAbort 事件(处理程序)将被触发,按代码中将显示“error:”加错误信息。
  • 调用 SetComplete 时,OnTransactionCommit 事件(处理程序)将被触发,按代码中将显示“ok.”。

有人可能搞不懂,为什么搞这么复杂,把 Response.Write 直接写在 set conn = nothing 这句之后不就完了么?在这里效果的确是一样的,但在一些较大型的程序中,ObjectContext 还是有意义的。

要点

  • sub OnTransactionCommit
  • sub OnTransactionAbort
  • ObjectContext.SetComplete
  • ObjectContext.SetAbort
相关文章