闡述ADO.NET結(jié)構(gòu)詳細(xì)說明介紹
選擇ADO.NET結(jié)構(gòu)時(shí),你應(yīng)該首先選擇本地的.NET提供者來為你的數(shù)據(jù)源進(jìn)行自定義。如果找不到本地的提供者,你可以使用OLD DB提供者,只要具備為了訪問數(shù)據(jù)源的OLD DB驅(qū)動(dòng)。OLE DB技術(shù)在很多年前就已經(jīng)成為ADO的一部分了,
ADO和ADO.NET的一個(gè)關(guān)鍵區(qū)別是怎樣面對(duì)不同數(shù)據(jù)源的挑戰(zhàn)。在ADO中,程序員通常使一個(gè)通用的對(duì)象集,ADO.NET結(jié)構(gòu)而不需要下層的數(shù)據(jù)源是什么。例如,如果你想從Oracle數(shù)據(jù)庫中獲取一條記錄,你使用與在SQL Server中完成相同任務(wù)的同樣的Connection類。這種情況在ADO.NET中不會(huì)發(fā)生,因?yàn)楹笳呤褂昧藬?shù)據(jù)提供者(data provider)模型。
ADO.NET數(shù)據(jù)提供者
數(shù)據(jù)提供者(data provider)是一個(gè)ADO.NET類集,它允許你訪問特定的數(shù)據(jù)庫,執(zhí)行SQL命令,獲取數(shù)據(jù)。ADO.NET結(jié)構(gòu)本質(zhì)上,數(shù)據(jù)提供者是應(yīng)用和數(shù)據(jù)源的橋梁。這些類包裝數(shù)據(jù)提供者包含如下內(nèi)容:Connection: 你使用這個(gè)對(duì)象去建立到數(shù)據(jù)源的連接。
Command: 你使用這個(gè)對(duì)象執(zhí)行SQL命令和存儲(chǔ)過程。DataReader: 這個(gè)對(duì)象提供從查詢中快速地、前向地(forward-only)、只讀地(read-only)訪問數(shù)據(jù)。DataAdapter: 這個(gè)對(duì)象執(zhí)行兩項(xiàng)任務(wù)。第一項(xiàng),你可以使用它來將從數(shù)據(jù)源獲取的特定信息填充DataSet(DataSet是一個(gè)非連接的表和關(guān)系的集合)。第二項(xiàng),你可以使用它將修改后的內(nèi)容應(yīng)用到數(shù)據(jù)源。#T#
ADO.NET并沒有包含通用的的數(shù)據(jù)提供對(duì)象。相反,它為不同類型的數(shù)據(jù)源提供了不同的數(shù)據(jù)提供者。每個(gè)數(shù)據(jù)提供者都有為優(yōu)化特定的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)的Connection, Command, DataReader和DataAdapter類的特定的實(shí)現(xiàn)。例如,ADO.NET結(jié)構(gòu)如果你想創(chuàng)建到SQL Server數(shù)據(jù)庫的連接,你需要使用SqlConnection連接類。
ADO.NET提供者模型的一個(gè)基本的思想是可擴(kuò)展性。換句說話,程序員能夠?yàn)樗接械臄?shù)據(jù)源創(chuàng)建自己的提供者。事實(shí)上,可以找到大量的概念示例來幫助你了解如何簡(jiǎn)便地創(chuàng)建自定義的ADO.NET提供者,ADO.NET結(jié)構(gòu)以便于包裝非關(guān)系的數(shù)據(jù)存儲(chǔ),如文件系統(tǒng)或者目錄服務(wù)。一些第三方開發(fā)者有自定義的.NET提供者出售。