日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

在ASP中使用事務(wù)控制_ASP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:ASP腳本循環(huán)語句
本篇教大家ASP腳本循環(huán)語句: ASP 動(dòng)態(tài)服務(wù)器頁面環(huán)境的特點(diǎn)就在于它是通過一種或幾種腳本語言而寫成的,腳本語言可以看作是編程語言的簡(jiǎn)化版,它易于學(xué)習(xí)和掌握,這給廣大動(dòng)態(tài)網(wǎng)站的設(shè)計(jì)者們提供了相當(dāng)大的便利�?梢赃@么說 : 腳本語言運(yùn)用的得當(dāng)與否直接關(guān)系到 ASP

   julyclyde(原作)

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

  在編程中,經(jīng)常需要使用事務(wù)。所謂事務(wù),就是一系列必須都成功的操作,只要有一步操作失敗,所有其他的步驟也必須撤銷。比如用ASP開發(fā)一個(gè)網(wǎng)絡(luò)硬盤系統(tǒng),其用戶注冊(cè)部分要做的事有:

  將用戶信息記入數(shù)據(jù)庫

  為用戶開個(gè)文件夾用于存儲(chǔ)

  初始化用戶操作日志

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

  由于數(shù)據(jù)庫系統(tǒng)特殊的發(fā)展歷史,小至Access,大到DB2,無不帶有事務(wù)支持。因此上述步驟可以如下表示:

  On Error Resume Next

  第一步:

  在事務(wù)環(huán)境下把用戶信息記入數(shù)據(jù)庫

  If Err Then

  關(guān)閉連接

  退出

  Else

  第二步:創(chuàng)建文件夾

  If Err Then

  回滾第一步數(shù)據(jù)庫操作,退出

  Else

  第三步:在事務(wù)環(huán)境下操作日志數(shù)據(jù)庫

  If Err Then

  回滾第一步操作,刪除第二步建立的文件夾

  退出

  End If

  End If

  End If

  提交第一步數(shù)據(jù)庫操作的事務(wù)

  提交第二步數(shù)據(jù)庫操作的事務(wù)

  End

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

  正確的解決辦法是使用ASP的事務(wù)控制功能。IIS通過和MTS服務(wù)聯(lián)系,可以控制多種支持事務(wù)的系統(tǒng),當(dāng)程序發(fā)出“失敗”的信號(hào)時(shí),所有支持事務(wù)的系統(tǒng)均將自動(dòng)回滾,即使操作已經(jīng)正式完成;對(duì)不支持事務(wù)的操作也提供了方便的手工回滾方式。上面的例子用ASP事務(wù)控制功能重寫如下:

  <%@ 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 '通知所有支持事務(wù)的組件回滾,并運(yùn)行手工回滾代碼

  Else

  ObjectContext.SetComplete

  End If

  Set FSO=Nothing

  Sub OnTransactionAbort

  Response.Write "錯(cuò)誤"

  FSO.DeleteFile Server.Mappath("a.txt") 'FSO的手工回滾——刪除文件夾

  End Sub

  Sub OnTransactionCommit

  Response.Write "勝利完成任務(wù)"

  End Sub

  %>

  第一行的<%@ TRANSACTION = Required %>表示這一頁asp文件需要MTS的事務(wù)支持。中間的各個(gè)操作都按普通順序書寫,而不用考慮回滾問題。在程序最后判斷是否有錯(cuò)誤。如果有,調(diào)用ObjectContext的SetAbort方法,IIS會(huì)通過MTS服務(wù)通知所有支持事務(wù)的組件回滾(主要是數(shù)據(jù)庫),并且運(yùn)行Sub OnTransactionAbort對(duì)不支持事務(wù)的操作手工回滾;如果沒有發(fā)生錯(cuò)誤,調(diào)用ObjectContext的SetComplete方法,則會(huì)運(yùn)行Sub OnTransactionCommit來顯示成功的消息。

  整個(gè)ASP程序不需要為判斷錯(cuò)誤和回滾操作書寫多余的代碼,只須在最后進(jìn)行判斷,即使今后增加了多步操作,也只需要在Sub OnTransactionAbort中進(jìn)行控制即可,非常方便,程序員可以專注于過程編寫而不是書寫糾錯(cuò)代碼。

  其實(shí)ASP還提供了許多更有用的功能,等著我們使用,千萬不要以為ASP使用腳本語言,功能就一定弱。

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

來源:模板無憂//所屬分類:ASP教程/更新時(shí)間:2014-10-10
相關(guān)ASP教程