分享

DataTable,DataView,DataRowView,DefaultView与Da...

 悟静 2012-05-05

这几个是常用的,它们之前有区别也有联系。 首先讲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。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多