最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
首頁 > 網站開發 > ASPnet >
  • asp.net教程之在ASP程序中實現數據庫事務控制

  • 2017-06-11 20:15 來源:未知
在編程中,經常需要使用事務。所謂事務,就是一系列必須都成功的操作,只要有一步操作失敗,所有其他的步驟也必須撤銷。比如用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使用腳本語言,功能就一定弱。 
pk10赛车冠军技巧
最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
风云天下会赚钱方法 网易支付平台如何赚钱 奔驰宝马游戏下载中心 奔驰宝马线上娛乐 福彩玩法 上海快3走势图1000 想股票赚钱看什么书 3d历史开奖号码查询 河北时时彩11选五开奖结果查询结果