天天看點

淺談ADO.NET中的五個主要對象

ADO.NET 對象模型中有五個主要的元件,分别是Connection 對象、Command 對象、DataSetCommand、DataSet 以及DataReader。這些元件中 負責建立聯機和資料操作的部分 我們稱為資料操作元件(Managed Providers) ,分别由Connection 對象、Command 對象、DataSetCommand 對象以及DataReader 對象所組成。資料操作元件最主要是當作DataSet 對象以及資料源之間的橋梁,負責将資料源中的資料取出後植入DataSet 對象中,以及将資料存回資料源的工作。 Connection對象 Connection 對象主要是開啟程式和資料庫之間的連結。沒有利用連結對象将資料庫打開,是無法從資料庫中取得資料的。這個物件在ADO.NET 的最底層,我們可以自己産生這個對象,或是由其它的對象自動産生。 Command對象 Command 對象主要可以用來對資料庫發出一些指令,例如可以對資料庫下達查詢、新增、修改、删除資料等指令,以及呼叫存在資料庫中的預存程式等。這個對象是架構在Connection 對象上,也就是Command 對象是透過連結到資料源的Connection 對象來下指令的;是以Connection連結到哪個資料庫,Command 對象的指令就下到哪裡。 DataSetCommand對象 DataSetCommand 對象主要是在資料源以及DataSet 之間執行資料傳輸的工作,它可以透過 Command 對象下達指令後,并将取得的資料放入DataSet 對象中。這個對象是架構在Command對象上,并提供了許多配合DataSet 使用的功能。在Beta 2 版中DataSetCommand 物件會更名為DataAdapter。 DataSet對象 DataSet 這個對象可以視為一個暫存區(Cache),可以把從資料庫中所查詢到的資料保留起來,甚至可以将整個資料庫顯示出來。DataSet 的能力不隻是可以儲存多個Table,還可以透過DataSetCommand 對象取得一些例如主鍵等的資料表結構,并可以記錄資料表間的關聯。 DataSet 對象可以說是ADO.NET 中重量級的對象,這個對象架構在DataSetCommand 對象上,本身 不具備和資料源溝通的能力 ;也就是說我們是将DataSetCommand 對象當做DataSet 對象以及資料源間傳輸資料的橋梁。 DataReader對象 當我們隻需要循序的讀取資料而不需要其它操作時,可以使用DataReader 對象。DataReader 對象隻是一次一筆向下循序地讀取資料源中的資料,不作其它的操作。因為DataReader 在讀取資料的時候限制了每次隻讀取一筆,而且隻能隻讀,是以使用起來不但節省資源而且效率很好。此外,因為不用把資料全部傳回,故可以降低網絡的負載。 ADO.NET 的資料操作元件(Managed Providers) ADO.NET 的資料存取和之前的版本不一樣。前版的ADO 存取資料的方式隻有一種,那就是透過OLE DB 來存取資料;而現在的ADO.NET 則分為兩種,一種是直接存取MS SQL Server 中的資料,另一種是透過OLE DB 來存取其它資料庫中的資料。前面我們提過: 要存取資料源中的資料,要透過資料操控元件 。這個資料操作元件就是Connection 對象、Command 對象、DataSetCommand 對象以及DataReader 對象。由于我們可以選擇透過OLE DB 和資料源聯機,或是和MS SQL Server 直接聯機;是以 ASP.NET 提供了兩組資料操作元件,分别為ADO 資料操作元件以及SQL 資料操作元件 。 每組資料操作元件内都有Connection 對象、Command 對象、DataSetCommand 對象及 DataReader 對象。這兩種資料操作元件雖然針對的資料源不一樣,但是這些對象的架構都一樣。例如ADOConnection 和SQLConnection 對象雖然一個是針對OLE DB,而另一個是針對MS SQLServer,但是這兩個對象都有一樣的屬性、事件及方法,是以使用起來并不會造成困擾;隻要針對所要建立的資料源種類來選擇ADO 資料操作元件,或是SQL 資料操作元件就可以了。雖然我們也可以透過OLE DB 來存取MS SQL Server 中的資料,但是透過SQL 類别對象來存取MS SQL Server 中的資料效率最好;這是因為SQL 類别不經過OLE DB 這一層,而是直接呼叫MS SQL Server 中的API,是以效率比較好。ADO.NET 對于這兩種資料存取方式所使用的對象完全不一樣,在使用的時候必須要特别注意。

本文轉自左正部落格園部落格,原文連結:http://www.cnblogs.com/soundcode/archive/2010/12/29/1921231.html,如需轉載請自行聯系原作者