DataTable,DataView,DataRowView,DefaultView与DataSet

DataTable,DataView,DataRowView,DefaultView与DataSet

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值