成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

剖析概括ADO.NET執行事務

開發 后端
這里就使用單個連接ADO.NET執行事務、ADO.NET執行事務步驟、確定事務類型做出詳細的介紹,希望對大家有幫助。

事務往往是我們很難處理的一部分,這里結合我的經驗和大家來談談關于ADO.NET執行事務。如果要將多項任務綁定在一起,使其作為單個工作單元來執行,可以使用ADO.NET中的事務。例如,假設應用程序執行兩項任務。首先使用訂單信息更新表。然后更新包含庫存信息的表,將已訂購的商品記入借方。如果任何一項任務失敗,兩個更新均將回滾。

確定事務類型

事務如果是單階段事務,并且由數據庫直接處理,則屬于本地事務。事務如果由事務監視程序進行協調并使用故障保護機制(例如兩階段提交)解決事務,則屬于分布式事務。每個.NETFramework數據提供程序使用自己的Transaction對象來執行本地事務。如果要求在SQLServer數據庫中執行,請選擇System.Data.SqlClient事務。對于Oracle事務,使用System.Data.OracleClient提供程序。此外,還提供了一個新的DbTransaction類,用于編寫需要事務并且與提供程序無關的代碼。

在服務器上執行時,事務最有效。如果使用的SQLServer數據庫廣泛使用顯式事務,應考慮使用Transact-SQLBEGINTRANSACTION語句以存儲過程的形式編寫這些事務。有關執行服務器端事務的更多信息,請參見“SQLServer聯機圖書”。

使用單個連接ADO.NET執行事務

在ADO.NET中,使用Connection對象控制事務。可以使用BeginTransaction方法啟動本地事務。開始事務后,可以使用Command對象的Transaction屬性在該事務中登記一個命令。然后,可以根據事務組件的成功或失敗,提交或回滾在數據源上進行的修改。不應對本地事務使用EnlistDistributedTransaction方法。

#T#事務的作用域限于該連接。以下示例執行顯式事務,該事務由try塊中兩個獨立的命令組成。這兩個命令對AdventureWorksSQLServer2005示例數據庫的Production.ScrapReason表執行INSERT語句,如果沒有引發異常,則提交。如果引發異常,catch塊中的代碼將回滾事務。如果在事務完成之前事務中止或連接關閉,事務將自動回滾。

按照下列步驟ADO.NET執行事務。
1.調用SqlConnection對象的BeginTransaction方法,以標記事務的開始。BeginTransaction方法返回對事務的引用。此引用分配給在事務中登記的SqlCommand對象。
2.將Transaction對象分配給要執行的SqlCommand的Transaction屬性。如果在具有活動事務的連接上執行命令,并且尚未將Transaction對象配給Command對象的Transaction屬性,則會引發異常。
3.執行所需的命令。
4.調用SqlTransaction對象的Commit方法完成事務,或調用Rollback方法結束事務。如果在Commit或Rollback方法執行之前連接關閉或斷開,事務將回滾。

以下代碼示例演示對MicrosoftSQLServer使用ADO.NET的事務邏輯。

  1. UsingconnectionAsNewSqlConnection(connectionString)  
  2. connection.Open()  
  3.  
  4. 'Startalocaltransaction.  
  5. DimsqlTranAsSqlTransaction=connection.BeginTransaction()  
  6.  
  7. 'Enlistacommandinthecurrenttransaction.  
  8. DimcommandAsSqlCommand=connection.CreateCommand()  
  9. command.Transaction=sqlTran 
  10.  
  11. Try  
  12. 'Executetwoseparatecommands.  
  13. command.CommandText=_ 
  14. "INSERTINTOProduction.ScrapReason(Name)VALUES('Wrongsize')"  
  15. command.ExecuteNonQuery()  
  16. command.CommandText=_ 
  17. "INSERTINTOProduction.ScrapReason(Name)VALUES('Wrongcolor')"  
  18. command.ExecuteNonQuery()  
  19.  
  20. 'Committhetransaction  
  21. sqlTran.Commit()  
  22. Console.WriteLine("Bothrecordswerewrittentodatabase.")  
  23.  
  24. CatchexAsException  
  25. 'Handletheexceptionifthetransactionfailstocommit.  
  26. Console.WriteLine(ex.Message)  
  27.  
  28. Try  
  29. 'Attempttorollbackthetransaction.  
  30. sqlTran.Rollback()  
  31.  
  32. CatchexRollbackAsException  
  33. 'ThrowsanInvalidOperationExceptioniftheconnection  
  34. 'isclosedorthetransactionhasalreadybeenrolled  
  35. 'backontheserver.  
  36. Console.WriteLine(exRollback.Message)  
  37. EndTry  
  38. EndTry  
  39. EndUsing  

 

 

 

 

責任編輯:田樹 來源: 博客
相關推薦

2009-11-12 16:04:42

ADO.NET對象查詢

2009-11-12 11:17:13

2009-11-12 10:45:45

ADO.NET連接測試

2009-11-04 11:40:38

ADO.NET Dat

2009-11-12 10:15:37

ADO.NET使用

2009-11-04 17:03:55

ADO.NET Exc

2009-12-23 16:05:47

ADO.NET錯誤

2009-12-28 15:32:04

ADO.NET構造

2009-12-21 11:18:09

ADO.NET體系結構

2009-11-13 13:35:54

ADO.NET數據服務

2009-12-24 16:09:42

ADO.NET數據源

2009-11-13 13:11:37

ADO.NET連接池

2009-12-30 16:58:43

ADO.NET

2009-11-13 17:01:07

ADO.NET事務處理

2009-12-30 16:50:26

ADO.NET事務

2010-01-04 13:06:50

ADO.NET事務

2009-12-28 15:11:36

ADO.NET專家

2009-12-29 14:55:31

ADO.NET Dat

2009-12-30 10:02:37

ADO.NET Ent

2009-11-03 16:37:10

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 神马影院一区二区三区 | 国产日韩一区二区三区 | 无吗视频 | 日本a网站| 久久久久久久久久久爱 | 在线播放国产一区二区三区 | 精品国产一区二区三区久久久久久 | 国产精品一区久久久 | 91视频在线看 | 成人a视频 | 国产精品成人一区二区三区夜夜夜 | 免费在线观看毛片 | 日本三级黄视频 | 啪啪免费网站 | 精精国产xxxx视频在线播放 | 国产精品视频一二三区 | 91av视频在线免费观看 | 久久精品亚洲 | 亚洲精品乱码久久久久久9色 | 国产一区亚洲 | av中文字幕网 | 国产97在线 | 日韩 | 日韩高清不卡 | 在线一区视频 | 性色av香蕉一区二区 | 亚洲精品一区二区 | 国产电影一区二区 | 99久久久久久99国产精品免 | 久久免费资源 | 久久免费精品视频 | 亚洲一区二区视频 | 91精品国产91久久久久青草 | 激情av网站| 欧美一区二区免费 | 97精品国产97久久久久久免费 | 国产免费一区二区三区最新6 | 在线看免费| 国产成人精品综合 | 91短视频网址 | 欧一区二区 | 国产精品2区 |