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

C#數據庫的事務原理及實踐

開發 后端
本文將介紹C#數據庫的事務原理及實踐,會告訴我們什么是數據庫事務、以及C#數據庫的屬性等等。希望本文對大家有所幫助。

什么是C#數據庫事務

C#數據庫事務是指作為單個邏輯工作單元執行的一系列操作。

設想網上購物的一次交易,其付款過程至少包括以下幾步數據庫操作:

◆更新客戶所購商品的庫存信息

◆保存客戶付款信息--可能包括與銀行系統的交互

◆生成訂單并且保存到數據庫中

◆更新用戶相關信息,例如購物數量等等

正常的情況下,這些操作將順利進行,最終交易成功,與交易相關的所有數據庫信息也成功地更新。但是,如果在這一系列過程中任何一個環節出了差錯,例如在更新商品庫存信息時發生異常、該顧客銀行帳戶存款不足等,都將導致交易失敗。一旦交易失敗,數據庫中所有信息都必須保持交易前的狀態不變,比如最后一步更新用戶信息時失敗而導致交易失敗,那么必須保證這筆失敗的交易不影響數據庫的狀態--庫存信息沒有被更新、用戶也沒有付款,訂單也沒有生成。否則,數據庫的信息將會一片混亂而不可預測。

數據庫事務正是用來保證這種情況下交易的平穩性和可預測性的技術。

C#數據庫事務的ACID屬性

事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向數據的資源。通過將一組相關操作組合為一個要么全部成功要么全部失敗的單元,可以簡化錯誤恢復并使應用程序更加可靠。一個邏輯工作單元要成為事務,必須滿足所謂的ACID(原子性、一致性、隔離性和持久性)屬性:

◆原子性

事務必須是原子工作單元;對于其數據修改,要么全都執行,要么全都不執行。通常,與某個事務關聯的操作具有共同的目標,并且是相互依賴的。如果系統只執行這些操作的一個子集,則可能會破壞事務的總體目標。原子性消除了系統處理操作子集的可能性。

◆一致性

事務在完成時,必須使所有的數據都保持一致狀態。在相關數據庫中,所有規則都必須應用于事務的修改,以保持所有數據的完整性。事務結束時,所有的內部數據結構(如B樹索引或雙向鏈表)都必須是正確的。某些維護一致性的責任由應用程序開發人員承擔,他們必須確保應用程序已強制所有已知的完整性約束。例如,當開發用于轉帳的應用程序時,應避免在轉帳過程中任意移動小數點。

◆隔離性

由并發事務所作的修改必須與任何其它并發事務所作的修改隔離。事務查看數據時數據所處的狀態,要么是另一并發事務修改它之前的狀態,要么是另一事務修改它之后的狀態,事務不會查看中間狀態的數據。這稱為可串行性,因為它能夠重新裝載起始數據,并且重播一系列事務,以使數據結束時的狀態與原始事務執行的狀態相同。當事務可序列化時將獲得最高的隔離級別。在此級別上,從一組可并行執行的事務獲得的結果與通過連續運行每個事務所獲得的結果相同。由于高度隔離會限制可并行執行的事務數,所以一些應用程序降低隔離級別以換取更大的吞吐量。

◆持久性

事務完成之后,它對于系統的影響是永久性的。該修改即使出現致命的系統故障也將一直保持。
DBMS的責任和我們的任務

企業級的數據庫管理系統(DBMS)都有責任提供一種保證事務的物理完整性的機制。就常用的SQLServer2000系統而言,它具備鎖定設備隔離事務、記錄設備保證事務持久性等機制。因此,我們不必關心數據庫事務的物理完整性,而應該關注在什么情況下使用數據庫事務、事務對性能的影響,如何使用事務等等。

本文將涉及到在.net框架下使用C#數據庫事務的各個方面。

體驗SQL語言的事務機制

作為大型的企業級數據庫,SQLServer2000對事務提供了很好的支持。我們可以使用SQL語句來定義、提交以及回滾一個事務。

如下所示的SQL代碼定義了一個事務,并且命名為"MyTransaction"(限于篇幅,本文并不討論如何編寫SQL語言程序,請讀者自行參考相關書籍):

  1. DECLARE@TranNameVARCHAR(20)  
  2. SELECT@TranName='MyTransaction' 
  3. BEGINTRANSACTION@TranNameGOUSEpubs  
  4. GO  
  5. UPDATEroysched  
  6. SETroyalty=royalty*1.10  
  7. WHEREtitle_idLIKE'Pc%' 
  8. GO  
  9. COMMITTRANSACTIONMyTransaction  
  10. GO 

【編輯推薦】

  1. 淺析C#正則表達式
  2. 實現DB2功能的C#數據庫編程實例
  3. C#語言操縱數據庫事務
  4. 概述C#語言異常處理
  5. 簡單介紹C#數組和函數
責任編輯:彭凡 來源: 51CTO
相關推薦

2009-08-06 18:10:06

C#數據庫事務

2009-08-25 15:50:13

C#連接遠程數據庫

2024-05-28 00:00:30

Golang數據庫

2024-02-28 08:06:17

2009-08-07 15:38:15

精通C#數據庫編程

2009-08-10 18:00:30

C#數據庫備份及還原

2010-09-13 09:03:49

Access數據庫

2009-08-24 16:46:04

C# 泛型

2009-08-11 13:35:13

C# Berkeley

2024-04-18 09:56:16

2009-03-19 10:08:09

C#數據庫查詢

2011-03-17 15:59:37

c#數據庫

2009-08-12 14:23:01

C#連接MySql數據

2013-11-04 09:40:49

云數據庫數據庫加密云數據庫加密

2010-10-26 15:21:11

連接Oracle數據庫

2009-08-25 12:50:32

數據庫常用C#代碼

2009-08-07 16:19:00

C#下數據庫編程

2009-08-12 14:27:36

訪問MySQL數據庫C# ODBC

2009-08-24 18:09:13

C#調用Oracle數

2009-09-04 17:23:21

C#數據庫連接對象
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 婷婷久久综合 | 日韩在线视频一区 | 久久在线| 密室大逃脱第六季大神版在线观看 | 福利视频二区 | 日一日操一操 | 女人毛片a毛片久久人人 | 91精品国模一区二区三区 | 欧美视频在线看 | 一区二区三区免费 | 欧美一级淫片免费视频黄 | 自拍偷拍3p | 亚洲欧美日韩在线不卡 | 天天操天天摸天天干 | 国产精品免费一区二区 | av电影一区二区 | 影音先锋成人资源 | 三区在线观看 | av在线免费观看网址 | 天天操夜夜操 | 自拍亚洲 | 国产在线精品区 | 亚洲精品久久久一区二区三区 | 成人福利影院 | 久久九九99| 精品熟人一区二区三区四区 | 国产一区二区三区免费 | 7777在线| 日日干日日操 | 国产一区二区三区免费观看视频 | 91原创视频| 日韩成人免费中文字幕 | 日韩精品一区二区三区在线播放 | 在线观看成人 | 亚洲视频一区 | 福利网址 | 在线一区二区三区 | 久久国产激情视频 | 波多野结衣一区二区 | 99亚洲精品 | 午夜影院黄 |