DataTable与dataView

一般来说,在我们从 SQL Server 等后端数据来源提取出所需的数据记录之后,会将这些数据储存于前端数据集当中的 DataTable 对象中,亦或是储存于不隶属于任何数据集之个别独立存在的 DataTable 对象中。

 

正如先前的文章所言,借助于 DataView,我们便能够替储存于 DataTable 中的数据建立不同的检视。比方说,通过DataView,您可以使用不同的排序顺序来检视 DataTable 中的数据,亦或是根据数据列状态或筛选表达式来筛选 DataTable 中的资料。DataView 提供的是一种动态的数据检视,也就是说,其内容、排序顺序、与成员会反应出来源 DataTable 中的任何变更。

 

显然在一般的正常处理流程中,是有了 DataTable 之后,才会有 DataView,问题是,我们能否将一个 DataView 转换成另外一个 DataTable 呢?答案当然是肯定的。ADO.NET 2.0 替 DataView 提供了一个全新的 ToTable 方法,使您能轻易根据 DataView 建立出一个 DataTable 对象。

 

ToTable 方法所建立出的 DataTable 可以内含 DataView 所有的字段或部分的字段,至于数据记录方面可以内含所有的数据记录或是非重复的数据记录,而这些作业都必须借助于不同多载版本的 ToTable 方法来完成。

 

以下的程序代码示范如何使用 DataView 的 ToTable 方法来建立一个 DataTable 对象,程序代码已加上完整的批注,于此不再解说,执行结果如图表 1 所示:

 

Option Strict On
Imports System.Data.SqlClient

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
   Handles MyBase.Load
        ' 利用SqlConnectionStringBuilder对象来构建连接字符串。
        Dim connectStringBuilder As New SqlConnectionStringBuilder()
        connectStringBuilder.DataSource = "(local)SQLEXPRESS"
        connectStringBuilder.InitialCatalog = "北风贸易"
        connectStringBuilder.IntegratedSecurity = True


        Dim myTable As New DataTable

        Using cn As New SqlConnection(connectStringBuilder.ConnectionString)
            Dim cmdLimingStudio As New SqlCommand( _
   "SELECT 部门, 员工编号,姓名,地址,出生日期,起薪,目前薪资,玉照FROM dbo.章立民研究室", cn)
            cn.Open()

            Using dr As SqlDataReader = cmdLimingStudio.ExecuteReader

                ' 将从「北风贸易」数据库之「章立民研究室」数据表提取所得的数据记录
                ' 加载至个别独立存在的MyTable 此一DataTable 对象中。
                myTable.Load(dr, LoadOption.OverwriteChanges)
            End Using
        End Using

        ' 将myTable 的数据内容显示在第一个DataGridView 控件中。
        Me.DataGridView1.DataSource = myTable
        ' 根据myTable 此一DataTable 对象建立一个DataView,并且排序与筛选数据。
        Dim myDataView As DataView = myTable.DefaultView
        myDataView.Sort = "部门, 姓名"
        myDataView.RowFilter = "目前薪资> 40000 AND 地址LIKE '%台北市%'"

        ' 将myDataView 的数据内容显示在第二个DataGridView 控件中。
        Me.DataGridView2.DataSource = myDataView

        ' 根据myDataView 建立出一个全新的DataTable 对象,
        ' 并且要求DataTable 对象只内含DataView 中的「姓名」、
        ' 「目前薪资」、「地址」与「玉照」等四个字段。此外,
        ' 重复的数据记录将不会内含于DataTable 对象中。
        Dim myNewTable As DataTable = myDataView.ToTable("章立民研究室子集", _
   True, New String() {"姓名", "目前薪资", "地址", "玉照"})

        ' 将myNewData 的数据内容显示在第三个DataGridView 控件中。
        Me.DataGridView3.DataSource = myNewTable
    End Sub
End Class

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值