国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

在ASP中使用事務控制_ASP教程

2024-05-04 11:04:48
字體:
來源:轉載
供稿:網友

推薦:ASP腳本循環語句
本篇教大家ASP腳本循環語句: ASP 動態服務器頁面環境的特點就在于它是通過一種或幾種腳本語言而寫成的,腳本語言可以看作是編程語言的簡化版,它易于學習和掌握,這給廣大動態網站的設計者們提供了相當大的便利。可以這么說 : 腳本語言運用的得當與否直接關系到 ASP

   julyclyde(原作)

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

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

  將用戶信息記入數據庫

  為用戶開個文件夾用于存儲

  初始化用戶操作日志

  這三步必須使用事務,否則萬一磁盤操作失敗,而沒有撤銷數據庫操作,就會造成只能登陸而不能操作的“死用戶”現象。

  由于數據庫系統特殊的發展歷史,小至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使用腳本語言,功能就一定弱。

分享:如何實現asp無組件生成縮略圖
網上有不少生成縮略圖的ASP組件。若你的虛擬空間不支持注冊新組件,可能會感覺自己的網站失色不少。心晴不才,結合網上資源寫了個無組件生成縮略圖程序,僅供參考。 還是先看看基礎部分吧。首先,我們知道在頁面中顯示圖片是如下代碼: img src=pic.gif border=0 width

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麻阳| 无为县| 灵宝市| 黑水县| 高雄县| 凯里市| 张家口市| 祁连县| 涞源县| 鞍山市| 开化县| 商河县| 平谷区| 潜江市| 万年县| 太谷县| 大田县| 镇原县| 无为县| 理塘县| 沙洋县| 富平县| 高雄市| 墨脱县| 滦平县| 南雄市| 梁河县| 墨竹工卡县| 乌拉特后旗| 临汾市| 博爱县| 甘南县| 贵港市| 祁阳县| 荥经县| 册亨县| 丹寨县| 德化县| 禄劝| 望谟县| 广州市|