六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

在ASP中使用事務控制

[摘要]julyclyde(原作)作者系2月份微軟社區之星Microsoft China Community Star 在編程中,經常需要使用事務。所謂事務,就是一系列必須都成功的操作,只要有一步操作...

julyclyde(原作)

作者系2月份微軟社區之星Microsoft China Community Star

    在編程中,經常需要使用事務。所謂事務,就是一系列必須都成功的操作,只要有一步操作失敗,所有其他的步驟也必須撤銷。比如用ASP開發一個網絡硬盤系統,其用戶注冊部分要做的事有:

  1. 將用戶信息記入數據庫
  2. 為用戶開個文件夾用于存儲
  3. 初始化用戶操作日志


這三步必須使用事務,否則萬一磁盤操作失敗,而沒有撤銷數據庫操作,就會造成只能登陸而不能操作的“死用戶”現象。
    由于數據庫系統特殊的發展歷史,小至Access,大到DB2,無不帶有事務支持。因此上述步驟可以如下表示:
On Error Resume Next
第一步:
在事務環境下把用戶信息記入數據庫
If Err Then
    關閉連接
    退出
Else
    第二步:創建文件夾
    If Err Then
        回滾第一步數據庫操作,退出
    Else
        第三步:在事務環境下操作日志數據庫
        If Err Then
            回滾第一步操作,刪除第二步建立的文件夾
            退出
        End If
    End If
End If
提交第一步數據庫操作的事務
提交第二步數據庫操作的事務
End


    每一步都需要進行判斷,如果失敗,還需要手工回滾前面多步操作,使程序變得復雜、難懂。如果今后更新了程序,增加其他步驟,還需要嵌套更多層的If...Else...End If,使程序流程更加復雜。

    正確的解決辦法是使用ASP的事務控制功能。IIS通過和MTS服務聯系,可以控制多種支持事務的系統,當程序發出“失敗”的信號時,所有支持事務的系統均將自動回滾,即使操作已經正式完成;對不支持事務的操作也提供了方便的手工回滾方式。上面的例子用ASP事務控制功能重寫如下:

<%@ TRANSACTION = Required %>
On Error Resume Next

Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open ....
Conn.Execute "INSERT...."
Conn.Close
Set Conn=Nothing

Set Conn2=Server.CreateObject("ADODB.Connection")
Conn2.Open ....
Conn2.Execute "INSERT...."
Conn2.Close
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使用腳本語言,功能就一定弱。




主站蜘蛛池模板: 亚洲激情视频 | 最新欧美精品一区二区三区不卡 | 日韩去日本高清在线 | 手机福利视频一区二区 | 在线观看视频h | 午夜性福 | 天堂资源中文官网 | 中文字幕国产 | 亚洲手机在线手机观看高清hd | 欧美自拍视频 | 午夜免费视频观看在线播放 | 日本成人高清视频 | 伊人影视网 | 日韩欧美在线观看一区 | 亚洲伊人久久大香线蕉综合图片 | 中文字幕精品视频在线观看 | 日本一本在线 | 亚洲国产日韩在线观看 | 探花 在线| 天堂网在线www资源网 | 色婷婷一区二区三区四区成人 | 香蕉视频在线免费播放 | 热伊人99re久久精品最新地 | 日韩欧美二区在线观看 | 日本午夜在线观看 | 天天干天天澡 | 亚洲αv| 亚洲精品中文字幕区 | 日韩中文字幕免费在线观看 | 亚洲欧美日韩三级 | 青青青爽视频在线观看 | 天天操天天曰 | 亚洲欧美日本韩国综合在线观看 | 在线免费黄| 中文国产成人精品久久一 | 日韩视频 中文字幕 | 亚洲欧美一区二区三区在线观看 | 日本精品一区二区 | 香蕉视频在线观看网址 | 天天擦天天干 | 色偷偷亚洲女性天堂 |