筆者對ADO.Net Sql進行使用說明
原來上網我下了很多ADO.Net Sql的Demo。而我用的是ADO.Net Sql,我在使用這些小樣時,基本上絕大部分基于ADO.Net Sql工程都因為少數文件無法轉換而無法加載工程,為此我也苦惱很久,后來終于讓我找到了解決辦法。
System.Data.SqlClient namespace包括了SqlTransaction類。此類包括了兩個屬性:
◆Connection:指示同事務處理相關聯的SqlConnection對象;
◆IsolationLevel:定義事務處理的ADO.Net Sql。
屬性IsolationLevel是包括如下成員的枚舉對象:
◆Chaos:從高度獨立的事務處理中出現的pending changes不能被覆蓋;
◆ReadCommitted:當數據需要被非惡意讀取時,采用共享鎖定(shared locks),但數據仍然可以在事務處理結束時被更新,這造成了非重復性的數據讀取(nonrepeatable reads)或phantom data的產生;#t#
◆ReadUncommitted:惡意讀取數據是可能發生的,這表示沒有使用共享鎖定(shared locks),并且沒有實現獨占鎖定(exclusive locks);
◆ADO.Net Sql:鎖定查詢中所用到的所有數據,由此避免其他用戶對數據進行更新。在phantom rows仍然可用的狀態下,這可以避免非重復性的數據讀取(nonrepeatable reads);
◆Serialisable:在DataSet中進行范圍鎖定,由此防止其他用戶在事務處理結束之前更新數據或在數據庫中插入行;
◆IsolationLevel定義鎖定記錄的級別,但這一概念不在本文論述范圍之內。對象SqlTransaction也提供了類似的方法。你可以使用以下方法來進行事務處理;
◆Commit:提交數據庫事務處理;
◆ADO.Net Sql:從未決狀態(pending state)反轉(roll back)事務處理。事務處理一旦被提交后即不能執行此操作;
◆Save:在事務處理中創建savepoint可以對事務處理的一部分進行反轉,并且指定savepoint名稱。
創建一個ADO.NET事務是很簡單的,僅僅是標準代碼的一個小的擴展。只要你知道如何使用ADO.NET來訪問數據庫,那就差不多知道了。區別僅僅是你需要把代碼放到一個事務上下文中。
還是原來的ADO.Net Sql類庫引用,在實現事務的類裏面引入System.Data和System.Data.SqlClient類庫,為了執行一個事 務,你需要創建一個SqlTransation對象,可以調用你的SqlConnection對象BeginTransation()方法來創建它,一旦 你把SqlTransation對象存為本地變數,你就可以把它賦給你的SqlCommand對象的事務屬性,或者把它作為構造器的一個參數來創建 SqlCommand。在執行SqlCommand動作之前,你必須調用BeginTransaction()方法,然後賦給SqlCommand事務屬 性。