成人免费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-04 17:03:55

ADO.NET Exc

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-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技術棧公眾號

主站蜘蛛池模板: 久久久久一区二区三区 | 99久久精品免费看国产四区 | 欧美不卡一区二区三区 | 精品国产色 | 日韩中文一区二区三区 | 高清黄色| 精品乱码一区二区三四区视频 | 国产精品久久久久久久久免费相片 | 国产三区视频在线观看 | 久久久久久久国产精品影院 | 久久久九九九九 | 人人爽人人草 | 国产精品a久久久久 | 久久久精品影院 | 亚洲视频一区在线 | 精品自拍视频 | 国产1区在线 | 综合久久一区 | a视频在线观看 | 日韩在线观看一区 | 欧美激情一区 | 欧美一级做性受免费大片免费 | 中文字幕高清在线 | 久久久久综合 | 亚洲免费一区二区 | 日韩视频在线观看一区二区 | 日韩欧美精品 | 一级在线 | 欧美一区二区三区在线观看 | 国产精品欧美一区二区三区不卡 | 天天综合永久 | 成人精品啪啪欧美成 | 久久成人精品 | 国产精品亚洲精品日韩已方 | 欧美日韩国产精品一区 | 国产福利久久 | 欧美日韩在线成人 | 国产欧美在线视频 | 91网站视频在线观看 | 91av在线视频观看 | 日本一区二区不卡视频 |