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

首頁 > 編程 > ASP > 正文

Asp事務(wù)處理

2024-05-04 11:02:47
字體:
供稿:網(wǎng)友
在編程中,經(jīng)常需要使用事務(wù)。所謂事務(wù),就是一系列必須都成功的操作,只要有一步操作失敗,所有其他的步驟也必須撤銷。比如用ASP開發(fā)一個網(wǎng)絡(luò)硬盤系統(tǒng),其用戶注冊部分要做的事有:  
  1、將用戶信息記入數(shù)據(jù)庫  
  2、為用戶開個文件夾用于存儲  
  3、初始化用戶操作日志 

  這三步必須使用事務(wù),否則萬一磁盤操作失敗,而沒有撤銷數(shù)據(jù)庫操作,就會造成只能登陸而不能操作的“死用戶”現(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ā)出“失敗”的信號時,所有支持事務(wù)的系統(tǒng)均將自動回滾,即使操作已經(jīng)正式完成;對不支持事務(wù)的操作也提供了方便的手工回滾方式。上面的例子用ASP事務(wù)控制功能重寫如下: 
復(fù)制代碼 代碼如下:
<%@ 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")  
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 团风县| 盐山县| 和平县| 乐陵市| 岐山县| 万源市| 深水埗区| 慈溪市| 丰顺县| 洞头县| 丰都县| 广德县| 临西县| 阳朔县| 华容县| 巴马| 南平市| 交城县| 商都县| 扎兰屯市| 永吉县| 水城县| 安岳县| 云安县| 如东县| 莎车县| 汕尾市| 雷山县| 隆林| 常熟市| 天峻县| 霍城县| 利津县| 海丰县| 渑池县| 鹰潭市| 阿勒泰市| 东安县| 静海县| 怀化市| 简阳市|