ADO.NET提供了用于訪問和操作數(shù)據(jù)的兩個(gè)主要組件是 .NET Framework 數(shù)據(jù)提供程序和 DataSet。
一、 .NET Framework 數(shù)據(jù)提供程序
.NET Framework 數(shù)據(jù)提供程序包含用于訪問各種數(shù)據(jù)源的數(shù)據(jù)對(duì)象,是專門為數(shù)據(jù)處理以及快速、只進(jìn)、只讀訪問數(shù)據(jù)而設(shè)計(jì)的組件。使用這些數(shù)據(jù)處理程序可以對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行檢索,查詢,更新,修改等操作。目前有4種類型的數(shù)據(jù)提供程序,具體使用哪種數(shù)據(jù)提供程序,要根據(jù)使用什么數(shù)據(jù)庫來確定。
.NET Framework 數(shù)據(jù)提供程序如下:
* OLE DB .NET Framework 數(shù)據(jù)提供程序。使用System.Data.OleDb命令空間,適合使用OLE DB作為數(shù)據(jù)源的訪問。
* ODBC .NET Framework 數(shù)據(jù)提供程序。使用System.Data.Odbc命令空間,適合使用ODBC作為數(shù)據(jù)源的訪問。
* SQL Server .NET Framework 數(shù)據(jù)提供程序。使用System.Data.SQLClient命令空間,適合對(duì)SQL Server 7.0版及以上版本數(shù)據(jù)庫訪問。
* Oracle .NET Framework 數(shù)據(jù)提供程序。使用System.Data.OracleClient命令空間,適合對(duì) Oracle 作為數(shù)據(jù)源的訪問。
而每種.NET數(shù)據(jù)提供程序都包含了以下4種對(duì)象。
* Connection對(duì)象:提供與數(shù)據(jù)源的連接。
* DataAdapter對(duì)象:提供連接DataSet對(duì)象和數(shù)據(jù)源的橋梁,可執(zhí)行對(duì)數(shù)據(jù)源的各種操作。
* Command對(duì)象:提供對(duì)數(shù)據(jù)庫命令的訪問,這些命令可用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過程、發(fā)送或檢索參數(shù)信息。
* DataReader對(duì)象:從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流,從數(shù)據(jù)源中讀取只能向前和只讀的數(shù)據(jù)流。
二、數(shù)據(jù)集(DataSet)
ADO.NET數(shù)據(jù)集(DataSet)是專門為獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問而設(shè)計(jì)的,相當(dāng)于遠(yuǎn)程數(shù)據(jù)庫的副本,使用它可以不直接和數(shù)據(jù)庫打交道,可以大批量操作數(shù)據(jù),也可將數(shù)據(jù)綁定到控件上。
DataSet數(shù)據(jù)集是ADO.NET的斷開式結(jié)構(gòu)的核心組件,它在與數(shù)據(jù)源斷開的緩存中存儲(chǔ)數(shù)據(jù),從而實(shí)現(xiàn)了獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問。因此,它可以用于多種不同的數(shù)據(jù)源,包括XML數(shù)據(jù)源、遠(yuǎn)程的或本地的數(shù)據(jù)庫。DataSet包含一個(gè)或多個(gè)DataTable對(duì)象的集合,每個(gè)DataTable對(duì)象包含DataRow對(duì)象、DataColumn對(duì)象和Constraint對(duì)象,分別存放數(shù)據(jù)表的行信息、列信息及約束信息。此外DataSet對(duì)象還包含DataRelation對(duì)象,用于表示表間關(guān)系。
下圖闡釋了 .NET Framework 數(shù)據(jù)提供程序和 DataSet 之間的關(guān)系。
ADO.NET結(jié)構(gòu)
在決定應(yīng)用程序應(yīng)使用 DataReader還是應(yīng)使用 DataSet時(shí),應(yīng)考慮應(yīng)用程序所需的功能類型。使用 DataSet 可執(zhí)行以下操作:
◆在應(yīng)用程序中將數(shù)據(jù)緩存在本地,以便可以對(duì)數(shù)據(jù)進(jìn)行處理。如果只需要讀取查詢結(jié)果,則 DataReader 是更好的選擇。
◆在層間或從 XML Web 服務(wù)對(duì)數(shù)據(jù)進(jìn)行遠(yuǎn)程處理。
◆與數(shù)據(jù)進(jìn)行動(dòng)態(tài)交互,例如綁定到 Windows 窗體控件或組合并關(guān)聯(lián)來自多個(gè)源的數(shù)據(jù)。
◆對(duì)數(shù)據(jù)執(zhí)行大量的處理,而不需要與數(shù)據(jù)源保持打開的連接,從而將該連接釋放給其他客戶端使用。
如果不需要 DataSet 所提供的功能,則可以通過使用 DataReader 以只進(jìn)、只讀方式返回?cái)?shù)據(jù),從而提高應(yīng)用程序的性能。雖然 DataAdapter 使用 DataReader 來填充 DataSet 的內(nèi)容,但使用 DataReader 可以提升性能,因?yàn)檫@樣可以節(jié)省 DataSet 所使用的內(nèi)存,并將省去創(chuàng)建 DataSet 并填充其內(nèi)容所需的處理。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
