這幾個(gè)是常用的,它們之前有區別也有聯(lián)系。 首先講DataTable,因為其它的都是以它為對象,或以它為基礎的。
一 、DataTable:表示內存中數據的一個(gè)表。
(1)它可以通過(guò)兩個(gè)方面創(chuàng )建,一個(gè)是通過(guò)連接數據庫記取某數據庫表中的某些值記錄,進(jìn)而在內存中形成相關(guān)的完整的記錄表,即使斷開(kāi)數據庫連接,也是仍然存在的;另一種方法是通過(guò)編程代碼來(lái)創(chuàng )建它(即在內存中創(chuàng )建DataTable,這個(gè)應該很熟,這是就不多說(shuō)了);
(2) 這與數據庫中的表是一樣的,也是有行和列的,只不過(guò)它們存儲的地方不一樣而已,數據庫中的表的數據是存儲在數據庫中,可以直接打開(kāi)數據庫表看到相應的存儲數據 ,而DataTable中的數據是存儲在內存中的,你看不到的;
(3) DataTalbe在C#中,都有自身的一個(gè)默認的自定義視圖,即DefaultView
二、DataView:自定義視圖,表示用于排序、篩選、搜索、編輯和導航的 DataTable 的可綁定數據的自定義視圖
(1)它是通過(guò)DataTable的DefaultView來(lái)創(chuàng )建的,之所以在代碼開(kāi)發(fā)中常用它的一個(gè)重要原因是它允許在windows窗體和web窗體中進(jìn)行數據綁定顯示,如web窗體窗體中的repeater,DataGrid,DataList,DropDownList的數據源本質(zhì)都是它DataView
(2)創(chuàng )建DataView可以有幾種方式,1:DataView view=new DataView(DataTable) 2:DataView view=DaTable.DefaultView();
(3)DataView的行稱(chēng)為DataRowView(即:數據庫行視圖),我們常用在當一個(gè)頁(yè)面中要顯示某條信息時(shí)(如:詳細頁(yè),編輯單條信息時(shí)),就常常用到它,其過(guò)程是:創(chuàng )建一個(gè)方法,返回一個(gè)DataRowView,然后在頁(yè)面后臺文件中,創(chuàng )建一個(gè)DataRowView對象,進(jìn)行把數據綁定顯示中頁(yè)面中的相應的web控件中,如:txtTitle.Text=row["title"].ToString(),(類(lèi)似ASP中的rs一樣,也是用 title=rs("title")...
(4)DataRowView還有一個(gè)地方是常用的是當綁定repeater控件中的任何其它web控件時(shí),也常用DataRowView,如: protected void rptBidList1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (i % 4 == 0 && i > 0) { e.Item.Controls.Add(new LiteralControl("")); } i++; if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { DataRowView drv = (DataRowView)e.Item.DataItem; hlDomain.NavigateUrl = string.Format("~/BidDomain.aspx?id={0}",drv["ID"]); hlDomain.ToolTip = string.Format("域名:{0}", drv["DomainName"]); .......... } }
(三)、DataSet ADO.NET是.Net FrameWork SDK中用以操作數據庫的類(lèi)庫的總稱(chēng)。而DataSet類(lèi)則是ADO.NET中最核心的成員之一,也是各種開(kāi)發(fā)基于.Net平臺程序語(yǔ)言開(kāi)發(fā)數據庫應用程序最常接觸的類(lèi)。之所以DataSet類(lèi)在A(yíng)DO.NET中具有特殊的地位,是因為DataSet在A(yíng)DO.NET實(shí)現從數據庫抽取數據中起到關(guān)鍵作用,在從數據庫完成數據抽取后,DataSet就是數據的存放地,它是各種數據源中的數據在計算機內存中映射成的緩存,所以有時(shí)說(shuō)DataSet可以看成是一個(gè)數據容器。同時(shí)它在客戶(hù)端實(shí)現讀取、更新數據庫等過(guò)程中起到了中間部件的作用(DataReader只能檢索數據庫中的數據)。
各種.Net平臺開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)數據庫應用程序,一般并不直接對數據庫操作(直接在程序中調用存儲過(guò)程等除外),而是先完成數據連接和通過(guò)數據適配器填充DataSet對象,然后客戶(hù)端再通過(guò)讀取DataSet來(lái)獲得需要的數據,同樣更新數據庫中數據,也是首先更新DataSet,然后再通過(guò)DataSet來(lái)更新數據庫中對應的數據的??梢?jiàn)了解、掌握ADO.NET,首先必須了解、
掌握DataSet。
DataSet主要有三個(gè)特性:
1. 獨立性。DataSet獨立于各種數據源。微軟公司在推出DataSet時(shí)就考慮到各種數據源的多樣性、復雜性。在.Net中,無(wú)論什么類(lèi)型數據源,它都會(huì )提供一致的關(guān)系編程模型,而這就是DataSet。
2. 離線(xiàn)(斷開(kāi))和連接。DataSet既可以以離線(xiàn)方式,也可以以實(shí)時(shí)連接來(lái)操作數據庫中的數據。這一點(diǎn)有點(diǎn)像ADO中的RecordSet。
3. DataSet對象是一個(gè)可以用XML形式表示的數據視圖,是一種數據關(guān)系視圖。 (更多有關(guān)DataSet的詳細深入的知識請看http://www.yesky.com/96/1924596.shtml) 其它相關(guān)的認識: 創(chuàng )建 DataTable DataTable 表示一個(gè)內存內關(guān)系數據的表,可以獨立創(chuàng )建和使用,也可以由其他 .NET Framework 對象使用,最常見(jiàn)的情況是作為 DataSet 的成員使用。 DataTable 是存放數據的表格,而DataView 是一個(gè)視圖,每一個(gè)DataTable 都有一個(gè) defaultview,你可以使用DataView 在DataTable根據你的查詢(xún)條件,選擇要操作的數據。 可以進(jìn)行篩選。 簡(jiǎn)單來(lái)說(shuō) DataTable中的數據是可以改動(dòng)的,而DataView 中的數據是不能改的。 就象數據庫中的表和視圖一樣。 這就是區別。這個(gè)其實(shí)跟cache 是沒(méi)有關(guān)系的 ,關(guān)鍵還是在于你綁定的控件是DataList ,例如你要是綁定的是DataList,DataGridView等等復合列表控件 ,那么不管你是綁定的DataTable還是DataView 數據源,最終綁定到控件上的數據源都是DataView。
聯(lián)系客服