数据视图和数据表有什么区别?

问题描述 投票:0回答:6

.NET 中的 DataView 和 DataTable 有什么区别? 据我了解,DataView只是DataTable的错误呈现。 我什么时候应该使用 DataView?

c# .net ado.net
6个回答
52
投票

当您想要运行查询并在控件中显示数据子集时,DataView 可以帮助您。这只是一个示例,请查看 MSDN DataView 示例,它解释了您应该在何处将 DataView 与 DataTable 一起使用...

数据表

数据表是单个数据库表的内存表示。您可以将其视为以相同的方式具有列和行。 DataTable 是 ADO.NET 库中的中心对象。使用 DataTable 的其他对象包括 DataSet 和 DataView。

查看 MSDN DataTable 类了解更多详细信息。

数据视图

数据视图是数据表的视图,有点像sql视图。它允许您对行进行过滤和排序 - 通常用于绑定到 Windows 窗体控件。

此外,可以自定义 DataView 以显示 DataTable 中的数据子集。此功能允许您将两个控件绑定到同一个 DataTable,但显示不同版本的数据。例如,一个控件可以绑定到显示表中所有行的 DataView,而第二个控件可以配置为仅显示已从 DataTable 中删除的行。 DataTable 还有一个 DefaultView 属性,它返回表的默认 DataView。

查看 MSDN DataView 类了解更多详细信息。


15
投票

Datatable
是根据您的数据库查询提取的无序且未经过滤的 DataRow 集合。 (此查询可能有多个表连接在一起,但您仍然有一个数据表作为查询的结果)。
DataView(您可能有多个)是相同数据的过滤和/或排序视图。

例如:

 using(SqlConnection cn = GetConnection())
 {
     cn.Open();
     SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers", cn);
     DataTable dt = new DataTable();
     da.Fill(dt);

     // At this point dt is filled with datarows extracted from the database in no particular order 
     // And the DefaultView presents the same record organization (or lack of), but...

     // Order on the default view by CustomerName
     dt.DefaultView.Sort = "CustomerName";
     foreach(DataRowView rv in dt.DefaultView)
          Console.WriteLine(rv["CustomerName"].ToString();
     
     // A new dataview with only a certain kind of customers ordered by name
     DataView dvSelectedCust = new DataView(dt, "CreditLevel = 1", "CustomerName", DataViewRowState.Unchanged);
     foreach(DataRowView rv in dvSelectedCust)
          Console.WriteLine(rv["CustomerName"],ToString();



 }

当然,创建和维护 DataView 会影响性能,因此您可以选择仅在真正需要时才使用它


8
投票

DataTable
表示单表表示,而
DataSet
表示多表表示。

这意味着通过使用

DataTable
我们只能保存数据库中的一张表,如果我们使用
DataSet
我们可以一次保存多个表...

DataView
表示
DataSet
中可用的数据视图...(
DataSet
中可用的表格视图) 它用于查找记录、排序、过滤记录...通过使用
DataView


6
投票

您可以使用DataView对DataTable进行过滤。例如,如果您有一个包含所有参数的数据集,您可以使用 DataView 找到其中一个参数:

DataView dv = new DataView();
dv = new DataView(parameterDs.Tables[0], "ParameterName = '@" + parameter.Key + "'", string.Empty, DataViewRowState.CurrentRows);

2
投票

互联网上有很多与此相关的链接,但仅供总结

DataView 是 DataTable 的自定义视图,用于排序、过滤、搜索、编辑和导航。 DataView 不存储数据,而是表示其相应 DataTable 的连接视图。

您可以在 VB 中查看简单的 DataView 示例


1
投票

DataView 是用于过滤或应用表达式排序等的附加层..

DataView 包含诸如

RowFilter

之类的运算符

链接:http://msdn.microsoft.com/fr-fr/library/system.data.dataview.aspx

© www.soinside.com 2019 - 2024. All rights reserved.