ADO.NET 巨集觀定義 傳統ADO主要針對緊密連接的客戶端/伺服器端系統,而 ADO.NET考慮到了斷開連接式應用並且引進了 Dateset 它代表任意數量的關聯表,其中每個表都包含了行和列的集合的本地副本。使用Dateset的話.在斷開資料庫連接的情況下調用程式集(如 web 頁面或者桌面可執行 ...
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的一些特性