ADO.NET 對象模型中有五個(gè)主要的組件,分別是Connection 對象、Command 對象、DataSetCommand、DataSet 以及DataReader。這些組件中 負責建立聯(lián)機和數據操作的部分
我們稱(chēng)為數據操作組件(Managed Providers) ,分別由Connection 對象、Command 對象、DataSetCommand 對象以及DataReader 對象所組成。數據操作組件最主要是當作DataSet 對象以及數據源之間的橋梁,負責將數據源中的數據取出后植入DataSet 對象中,以及將數據存回數據源的工作。
Connection對象
Connection 對象主要是開(kāi)啟程序和數據庫之間的連結。沒(méi)有利用連結對象將數據庫打開(kāi),是無(wú)法從數據庫中取得數據的。這個(gè)物件在A(yíng)DO.NET 的最底層,我們可以自己產(chǎn)生這個(gè)對象,或是由其它的對象自動(dòng)產(chǎn)生。
Command對象
Command 對象主要可以用來(lái)對數據庫發(fā)出一些指令,例如可以對數據庫下達查詢(xún)、新增、修改、刪除數據等指令,以及呼叫存在數據庫中的預存程序等。這個(gè)對象是架構在Connection 對象上,也就是Command 對象是透過(guò)連結到數據源的Connection 對象來(lái)下命令的;所以Connection連結到哪個(gè)數據庫,Command 對象的命令就下到哪里。
DataSetCommand對象
DataSetCommand 對象主要是在數據源以及DataSet 之間執行數據傳輸的工作,它可以透過(guò)
Command 對象下達命令后,并將取得的數據放入DataSet 對象中。這個(gè)對象是架構在Command對象上,并提供了許多配合DataSet 使用的功能。在Beta 2 版中DataSetCommand 物件會(huì )更名為DataAdapter。
DataSet對象
DataSet 這個(gè)對象可以視為一個(gè)暫存區(Cache),可以把從數據庫中所查詢(xún)到的數據保留起來(lái),甚至可以將整個(gè)數據庫顯示出來(lái)。DataSet 的能力不只是可以?xún)Υ娑鄠€(gè)Table,還可以透過(guò)DataSetCommand 對象取得一些例如主鍵等的數據表結構,并可以記錄數據表間的關(guān)聯(lián)。
DataSet 對象可以說(shuō)是ADO.NET 中重量級的對象,這個(gè)對象架構在DataSetCommand 對象上,本身 不具備和數據源溝通的能力 ;也就是說(shuō)我們是將DataSetCommand 對象當做DataSet 對象以及數據源間傳輸數據的橋梁。
DataReader對象
當我們只需要循序的讀取數據而不需要其它操作時(shí),可以使用DataReader 對象。DataReader
對象只是一次一筆向下循序地讀取數據源中的數據,不作其它的操作。因為DataReader 在讀取數據的時(shí)候限制了每次只讀取一筆,而且只能只讀,所以使用起來(lái)不但節省資源而且效率很好。此外,因為不用把數據全部傳回,故可以降低網(wǎng)絡(luò )的負載。
ADO.NET 的數據操作組件(Managed Providers)
ADO.NET 的數據存取和之前的版本不一樣。前版的ADO 存取數據的方式只有一種,那就是透過(guò)OLE DB 來(lái)存取數據;而現在的ADO.NET 則分為兩種,一種是直接存取MS SQL Server 中的數據,另一種是透過(guò)OLE DB 來(lái)存取其它數據庫中的數據。前面我們提過(guò): 要存取數據源中的數據,要透過(guò)數據操控組件 。這個(gè)數據操作組件就是Connection 對象、Command 對象、DataSetCommand 對象以及DataReader 對象。由于我們可以選擇透過(guò)OLE DB 和資料源聯(lián)機,或是和MS SQL Server 直接聯(lián)機;所以 ASP.NET 提供了兩組數據操作組件,分別為ADO 數據操作組件以及SQL 數據操作組件 。
每組數據操作組件內都有Connection 對象、Command 對象、DataSetCommand 對象及
DataReader 對象。這兩種數據操作組件雖然針對的數據源不一樣,但是這些對象的架構都一樣。例如ADOConnection 和SQLConnection 對象雖然一個(gè)是針對OLE DB,而另一個(gè)是針對MS SQLServer,但是這兩個(gè)對象都有一樣的屬性、事件及方法,所以使用起來(lái)并不會(huì )造成困擾;只要針對所要建立的數據源種類(lèi)來(lái)選擇ADO 數據操作組件,或是SQL 數據操作組件就可以了。雖然我們也可以透過(guò)OLE DB 來(lái)存取MS SQL Server 中的資料,但是透過(guò)SQL 類(lèi)別對象來(lái)存取MS SQL Server 中的數據效率最好;這是因為SQL 類(lèi)別不經(jīng)過(guò)OLE DB 這一層,而是直接呼叫MS SQL Server 中的API,所以效率比較好。ADO.NET 對于這兩種數據存取方式所使用的對象完全不一樣,在使用的時(shí)候必須要特別注意。
【編輯推薦】
聯(lián)系客服