1. 程式人生 > >簡述ADO.NET(一)

簡述ADO.NET(一)

ADO.NET 巨集觀定義

傳統ADO主要針對緊密連線的客戶端/伺服器端系統,而 ADO.NET考慮到了斷開連線式應用並且引進了 Dateset 它代表任意數量的關聯表,其中每個表都包含了行和列的集合的本地副本。使用Dateset的話.在斷開資料庫連線的情況下呼叫程式集(如 web 頁面或者桌面可執行程式)處理和更新它的內容.然後使用關聯的資料介面卡把修改後的資料提交回資料庫。

ADO.NET 的三面

從概念上來說,ADO.NET類庫有三種完全不同的方式來實現資料訪問:連線式、斷開式和通過Entity 框架。

當使用連線式的時候,你的程式碼需要顯式連線或者斷開基層資料來源。用這種方式使用 ADO.NET時,通常會用到連線物件、命令物件和資料讀取器物件來實現這樣的資料互動。

另一方面,斷開式資料訪問允許通過一組DataTable物件(儲存在Dataset中)來獲取外部資料的一個客戶端副本;當你通過相關的資料介面卡物件來獲取Dataset 的時候,資料連線會自動開啟或關閉。你可能也猜到了,這樣能快速釋放連線以便其他呼叫者使用,也極大增加了系統的可伸縮性

 一旦獲取了一個DataSet後.就能在不需要花費網路流量的情況下隨意修改內容。同樣.如果你想把修改後的結果重新提交回資料庫,需要再次使用資料介面卡物件(關聯一組SQL語句)來更新資料來源,此時連線會為資料庫更新重新開啟並在結束操作後會立即被關閉。

一個數據訪問API,叫做 Entity Framework (簡稱EF).藉助 EF 可以用封裝了大量資料庫底層細節的客戶端物件與關係型資料庫互動。同樣,EF程式設計模型還可以使用 LINQ to Entity 語法,用強型別的LINQ 查詢與關係劃資料庫互動。

ado.net資料提供程式

ADO.NET沒有提供單一物件集來和多個數據庫管理系統(DBMS)進行通訊.而是提供了多種資料提供程式.每種為某個DBMS進行優化,這種方法的好處是,一來能以程式設計方式利用DBMS獨有的一些特性,二來能直接和基層的DBMS引擎進行連線而不需要為不同的DBMS做中間的對映層。
簡單來說,資料提供程式是一組定義在用於和特定的資料來源型別進行通訊的名稱空間內的一組類
型。不管你用的是哪種資料提供程式.它們都有一系列類來提供核心功能。

 
     AOO.NET資料提供程式的一些核心物件
 物件  基類  實現的介面  作用
Connection   DbConnection  IDbConnection  連線和斷開資料來源,提供了相關事務物件的訪問 
 Command  DbCommand IDbCommand  代表SQL查詢語句或者儲存過程名,同樣提供了相關資料讀取器物件的訪問  
 DataReader DbDataReader IDbDataReader和IDataReader
提供只讀只向前形式的教據訪問 
DataAdapter  DbDataAdapter  DbDataAdapter和IDataAdapter  在資料庫和呼叫這之間傳遞DataSet,內建4個命令物件來實現教據的查詢、插入、修改和刪除操作 
Parameter DbParameter  IDataParameter和IDbDataParameter 在引數化查詢中表示引數
Transaction DbTransaction IDbTransaction  IDbTransaction   實現資料庫事務

 

 儘管這些類的命名對於不同的資料提供程式不盡相同(比如SqlConnection 和OracleConnection 、OdbcConnection 和MySqlConnection )。但是它們都從相同的基類(就連線物件而言,是DbConnection)繼承並且實現相同的介面(如 IDbConnection)。這樣的話.一旦你掌握了一種資料提供程式的用法.學習其他的資料提供程式就非常簡單了;

微軟提供的ado.net資料提供程式

  由定義在system.Data.OleDb 名稱空間下的類組成的OLE DB 資料提供程式能讓你訪問所有支援基於傳統COM的OLE DB協議的資料庫。使用這個資料提供程式,能非常簡單地改變連線字串中的"Provider",並能和各種OLE DB資料庫進行通訊。

 需要知道的是,其實OLE DB資料提供程式在後臺呼叫各種COM物件來實現資料互動,這可能會影響程式的效能。基本上當某個DBMS沒有對應的.NET資料提供程式時,我們才會用OLE OB資料提供程式。然而,稱職的OBMS 都應該有自定義的ADO.NET教據提供程式提供下載。System.Data.OleDb應該被稱為遺留名稱空間

 System.Data.Sqlclient名稱空間包含SQL server 資料提供程式的一些類,井且提供了和OLE DB資料提供程式差不多的一些功能.但是主要的區別是它繞開OLE DB層進行訪問。帶來的效率顯而易見。同樣,SQL server資料提供程式也能很好利用DBMS的一些特性

與ADO.NET的有關的名稱空間

ADO.NET名稱空間
名稱空間 作用
Microsoft.SqlSercer.Server 這個名稱空間提供的型別促進CLR和SQL server 2005及後續版本的整合服務
System.Data 這個名稱空間定義了各種資料提供程式所用的主要型別.包括公共介面和斷開連線層的許多型別(如Dataset 和DataTable 等)
System.Data.Common 這個名稱空間包含了各種資料提供程式共享的型別,也包括公共抽象基類
System.Data.Sql 這個名稱空間能使你發現安裝在當前本地網路的的SQL Server例項
ystem.Data.SqlTypes 這個名稱空間包含微軟SQL Server中使用的本機資料型別。儘管你可能不會直接使用相應的CLR資料型別.但是可以優化SQLTypes來和SQL Server 互動(例如,如果 sQLserver 教據庫包含整數值.你可以使用int或SqlTypes.Spllnt32來表示它)