官术网_书友最值得收藏!

2.1 ADO.NET概述

ADO.NET是微軟開發設計的.NET框架下用于和數據庫交互的面向對象的類庫。ADO.NET提供了對關系型數據庫、XML和應用程序數據的訪問,允許和不同類型的數據源以及數據庫進行交互。

ADO.NET同其前身ADO系列訪問數據庫的控件相比,做了以下重要改進。

1)ADO.NET引入了離線數據結果集(Disconnected DataSet)的概念,通過使用離線數據結果集,程序可在數據庫斷開的情況下訪問數據庫。

2)ADO.NET提供了對XML文檔的支持,通過ADO.NET控件可以方便地在異構環境的項目間讀取和交換數據。

2.1.1 ADO.NET體系結構

ADO.NET控件的表現形式是.NET類庫,擁有.NET Data Provider(數據提供者)和DataSet(數據結果集)對象兩個核心控件,如圖2-1所示。

.NET Data Provider是專門為數據處理和快速訪問數據而設計的控件,包括Connection、Command、DataReader和DataAdapter四大類對象。

● Connection:負責在程序里連接數據源,連接SQL Server數據庫服務器。

● Command:通過SQL語句的形式執行數據庫操作,并能將查詢到的結果集填充到DataSet里。

● DataReader:提供了順序只讀的方式讀取Command對象獲得的數據集。DataReader以獨占的方式打開數據庫連接。使用DataReader對象的效率較高,適用于要查詢大量數據,同時不需要隨機訪問和修改數據的場合使用。

● DataAdapter:充當DataSet和數據源之間檢索和保存數據的橋梁。使用DataAdpater在DataSet和數據源之間交換數據。每個DataAdapter都在DataSet中的單個DataTable對象和SQL語句或存儲過程所產生的單個結果集之間交換數據。

DataSet對象是支持ADO.NET的斷開式、分布式數據方案的核心對象。DataSet是數據的內存駐留表示形式,無論數據源是什么,都會提供一致的關系編程模型。DataSet是專門為獨立于任何數據源的數據訪問而設計的。DataSet對象的主要功能如下。

1)DataSet對象可以用來存儲從數據庫查詢到的數據結果,它在獲得數據或更新數據后立即與數據庫斷開,所以能高效地訪問和操作數據庫。

2)DataSet對象能把應用代碼里的業務執行結果更新到數據庫中。還可以在離線的情況下管理存儲數據,這在海量數據訪問控制時非常有用。

圖2-1 ADO.NET控件的體系結構

2.1.2 ADO.NET對象模型

ADO.NET對象模型中有5個主要的數據庫訪問和操作對象,分別為Connection、Command、DataReader、DataAdapter和DataSet對象。

● Connection:主要負責連接數據庫。

● Command:主要負責生成并執行SQL語句。

● DataReader:主要負責讀取數據庫中的數據。

● DataAdapter:主要負責在Command對象執行完SQL語句后生成并填充DataSet和DataTable。

● DataSet:主要負責存取和更新數據。

ADO.NET主要提供了四種數據提供者(Data Provider),用于訪問四類數據源。

1)SQL Server .NET Framework數據提供程序:只能訪問msSQL Server 7.0或更高版本,更早版本只能通過OLE DB數據提供程序訪問,命名空間為System.Data.SqlClient。

2)OLE DB .NET Framework數據提供程序:用于訪問OLE DB數據,該程序不支持OLE DB 2.5版接口,命名空間為System.Data.OleDb。

3)ODBC .NET Framework數據提供程序:用于訪問ODBC數據,命名空間為System.Data.Odbc。

4)Oracle .NET Framework數據提供程序:用于訪問Oracle數據,該程序需要Oracle客戶端軟件8.1.7或更高版本的支持,命名空間為System.Data.OracleClient。

四種數據提供者內部均有Connection、Command、DataReader和DataAdapter 4類對象。對于不同的數據提供者,這些數據提供者均以接口的形式封裝了不同數據庫的連接訪問動作,使用數據庫訪問驅動程序屏蔽了底層數據庫的差異,雖然它們的類名不同,但連接訪問數據庫的過程卻大同小異。本章主要介紹SQL Server .NET Framework數據提供程序,方式同樣適用于其他三種類型。

表2-1為這四類數據提供者下的對象命名。

表2-1 四類數據提供者命名

主站蜘蛛池模板: 东海县| 庆云县| 噶尔县| 青州市| 阜康市| 泰来县| 河东区| 卢龙县| 北川| 胶州市| 日喀则市| 讷河市| 新竹市| 改则县| 建阳市| 朝阳市| 新乡市| 通化市| 南安市| 平湖市| 达孜县| 迭部县| 石狮市| 新密市| 漳浦县| 丰顺县| 濮阳县| 包头市| 汽车| 喀什市| 冕宁县| 米林县| 枣阳市| 海城市| 高安市| 额敏县| 林州市| 嘉黎县| 凤翔县| 西吉县| 沂水县|