如何:检索已更改的行

数据表中的每行都有一个 RowState 属性,该属性使用 DataRowState 枚举中的值跟踪该行的当前状态。 通过调用 DataSetDataTable 的 GetChanges 方法,可以从数据集或数据表返回已更改的行。 在调用 GetChanges 之前,可以通过调用数据集的 HasChanges 方法确认是否存在更改。 有关 HasChanges 的更多信息,请参见 如何:检查已更改的行

提示

在提交对数据集或数据表的更改(通过调用 AcceptChanges 方法)后,GetChanges 方法将不返回数据。 如果应用程序需要处理已更改的行,则必须在调用 AcceptChanges 方法之前进行处理。

调用数据集或数据表的 GetChanges 方法将返回只包含已更改记录的新数据集或数据表。 如果只需获取特定的记录(例如,只是新记录或已修改的记录),则可以将值作为参数从 DataRowState 枚举传递给 GetChanges 方法。

使用 DataRowVersion 枚举访问行的不同版本(例如,可能希望在处理某行之前检查该行中的原始值)。

获取数据集中所有已更改的记录

  • 调用数据集的 GetChanges 方法。

    下面的示例创建一个名为 changedRecords 的新数据集,并且用另一个名为 dataSet1 的数据集中所有已更改的记录对其进行填充。

    Dim changedRecords As DataSet = DataSet1.GetChanges()
    
    DataSet changedRecords = dataSet1.GetChanges();
    

获取数据表中所有已更改的记录

  • 调用数据表的 GetChanges 方法。

    下面的示例创建一个名为 changedRecordsTable 的新数据表,并且用另一个名为 dataTable1 的数据表中所有已更改的记录对其进行填充。

    Dim changedRecordsTable As DataTable = dataTable1.GetChanges()
    
    DataTable changedRecordsTable = dataTable1.GetChanges();
    

获取具有特定行状态的所有记录

  • 调用数据集或数据表的 GetChanges 方法并将 DataRowState 枚举值当作参数进行传递。

    下面的示例显示如何创建名为 addedRecords 的新数据集,并且只用已添加到 dataSet1 数据集的记录对其进行填充。

    Dim addedRecords As DataSet = DataSet1.GetChanges(DataRowState.Added)
    
    DataSet addedRecords = dataSet1.GetChanges(DataRowState.Added);
    
  • 下面的示例演示如何返回最近添加到 Customers 表的所有记录:

    Private Function GetNewRecords() As NorthwindDataSet.CustomersDataTable
    
        Return CType(NorthwindDataSet1.Customers.GetChanges(Data.DataRowState.Added),
            NorthwindDataSet.CustomersDataTable)
    End Function
    
    private NorthwindDataSet.CustomersDataTable GetNewRecords()
    {
        return (NorthwindDataSet.CustomersDataTable)
            northwindDataSet1.Customers.GetChanges(DataRowState.Added);
    }
    

请参见

任务

如何:检查已更改的行

如何:获取 DataRow 的特定版本

概念

在 Visual Studio 中将 Windows 窗体控件绑定到数据

在 Visual Studio 中将控件绑定到数据

其他资源

连接到 Visual Studio 中的数据

准备应用程序以接收数据

将数据获取到应用程序

在应用程序中编辑数据

验证数据

保存数据