无法在数据集中

无法在数据集中

问题描述:

检查更改的行我有我的计划,存储有关消息的信息,并希望在新信息已被添加到其检测范围内的表。我这样做的原因是因为我想只在有新数据时才向用户显示新数据,而不是不断地获取所有行并显示它们。无法在数据集中

我决定这样做的方式是通过使用dataSet.HasChanged()函数,该函数本质上应该检查数据集是否有任何新行以及名为DataChanged的函数是否返回dataSet.HasChanged()值。

不过,我一直使用的函数返回false(即使有变化)

下面是函数...从来没有检出,因此该功能

public bool DataChanged(string Table) 
{ 
    //This is the variable that will be returned 
    bool ChangesMade; 

    //Create the adapter 
    OleDbDataAdapter adapter = new OleDbDataAdapter(Table, connector); 
    //Clear the current data in the dataset 
    dataSet.Clear(); 
    //Open the connection and fill the dataset 
    connector.Open(); 
    adapter.Fill(dataSet, "TableData1"); 
    connector.Close(); 
    return ChangesMade = dataSet.HasChanges(); 
} 

变化出于某种原因即使向数据集添加新记录后,也总是返回false。

,它提供的功能段解释之一将是非常有益的,我现在的方法的固定变得更是这样一种替代方法。

这是一个简单的方法来做到这一点。

确保时间戳/ Rowversion列中存在您要跟踪对每个表。

返回当前数据库的时间戳到您的调用程序为您的数据的部分结果集(在这种情况下,数据集)。例如,将以下查询添加到结果集中。

SELECT @@DBTS; 

下次运行查询时使用此返回值,并将以下内容添加到现有的WHERE子句中。

... 
AND (@LastRowversionValue IS NULL 
    OR TableName.RowversionColumn > @LastRowversionValue) 
... 

传递null为@LastRowversionValue第一次查询跑到获得进程开始。更新到,因为你检索的数据最后一次表(一个或多个),其被插入

任何行/,将具有比你从最后执行存储在一个更大的Rowversion。