這幾個是常用的,它們之前有區別也有聯繫。 首先講DataTable,因為其它的都是以它為對象,或以它為基礎的。

  一 、DataTable:表示內存中數據的一個表。

  (1)它可以通過兩個方面創建,一個是通過連接資料庫記取某資料庫表中的某些值記錄,進而在內存中形成相關的完整的記錄表,即使斷開資料庫連接,也是仍然存在的;另一種方法是通過編程代碼來創建它(即在內存中創建DataTable,這個應該很熟,這是就不多說了);

  (2) 這與資料庫中的表是一樣的,也是有行和列的,只不過它們存儲的地方不一樣而已,資料庫中的表的數據是存儲在資料庫中,可以直接打開資料庫表看到相應的存儲數據 ,而DataTable中的數據是存儲在內存中的,你看不到的;

  (3) DataTalbe在C#中,都有自身的一個默認的自定義視圖,即DefaultView

  二、DataView:自定義視圖,表示用於排序、篩選、搜索、編輯和導航的 DataTable 的可綁定數據的自定義視圖

  (1)它是通過DataTable的DefaultView來創建的,之所以在代碼開發中常用它的一個重要原因是它允許在windows窗體和web窗體中進行數據綁定顯示,如web窗體窗體中的repeater,DataGrid,DataList,DropDownList的數據源本質都是它DataView

  (2)創建DataView可以有幾種方式,1:DataView view=new DataView(DataTable) 2:DataView view=DaTable.DefaultView();

  (3)DataView的行稱為DataRowView(即:資料庫行視圖),我們常用在當一個頁面中要顯示某條信息時(如:詳細頁,編輯單條信息時),就常常用到它,其過程是:創建一個方法,返回一個DataRowView,然後在頁面後台文件中,創建一個DataRowView對象,進行把數據綁定顯示中頁面中的相應的web控制項中,如:txtTitle.Text=row["title"].ToString(),(類似ASP中的rs一樣,也是用 title=rs("title")...

  (4)DataRowView還有一個地方是常用的是當綁定repeater控制項中的任何其它web控制項時,也常用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中用以操作資料庫的類庫的總稱。而DataSet類則是ADO.NET中最核心的成員之一,也是各種開發基於.Net平台程序語言開發資料庫應用程序最常接觸的類。之所以DataSet類在ADO.NET中具有特殊的地位,是因為DataSet在ADO.NET實現從資料庫抽取數據中起到關鍵作用,在從資料庫完成數據抽取後,DataSet就是數據的存放地,它是各種數據源中的數據在計算機內存中映射成的緩存,所以有時說DataSet可以看成是一個數據容器。同時它在客戶端實現讀取、更新資料庫等過程中起到了中間部件的作用(DataReader只能檢索資料庫中的數據)。

  各種.Net平台開發語言開發資料庫應用程序,一般並不直接對資料庫操作(直接在程序中調用存儲過程等除外),而是先完成數據連接和通過數據適配器填充DataSet對象,然後客戶端再通過讀取DataSet來獲得需要的數據,同樣更新資料庫中數據,也是首先更新DataSet,然後再通過DataSet來更新資料庫中對應的數據的。可見了解、掌握ADO.NET,首先必須了解、

  掌握DataSet。

  DataSet主要有三個特性:

  1. 獨立性。DataSet獨立於各種數據源。微軟公司在推出DataSet時就考慮到各種數據源的多樣性、複雜性。在.Net中,無論什麼類型數據源,它都會提供一致的關係編程模型,而這就是DataSet。

  2. 離線(斷開)和連接。DataSet既可以以離線方式,也可以以實時連接來操作資料庫中的數據。這一點有點像ADO中的RecordSet。

  3. DataSet對象是一個可以用XML形式表示的數據視圖,是一種數據關係視圖。 (更多有關DataSet的詳細深入的知識請看http://www.yesky.com/96/1924596.shtml) 其它相關的認識: 創建 DataTable DataTable 表示一個內存內關係數據的表,可以獨立創建和使用,也可以由其他 .NET Framework 對象使用,最常見的情況是作為 DataSet 的成員使用。 DataTable 是存放數據的表格,而DataView 是一個視圖,每一個DataTable 都有一個 defaultview,你可以使用DataView 在DataTable根據你的查詢條件,選擇要操作的數據。 可以進行篩選。 簡單來說 DataTable中的數據是可以改動的,而DataView 中的數據是不能改的。 就象資料庫中的表和視圖一樣。 這就是區別。這個其實跟cache 是沒有關係的 ,關鍵還是在於你綁定的控制項是DataList ,例如你要是綁定的是DataList,DataGridView等等複合列表控制項 ,那麼不管你是綁定的DataTable還是DataView 數據源,最終綁定到控制項上的數據源都是DataView。

推薦閱讀:

查看原文 >>
相关文章