如何跟踪数据库中的更改

本文关键字:数据库 何跟踪 跟踪 | 更新日期: 2023-09-27 18:30:12

我正在使用C#开发一个windows窗体应用程序。我展示了一个网格,其中的值来自数据库。我的问题是,当通过任何方法对数据库进行更改时,如何更新网格。

我尝试过SqlDependency类。但是,我的网格会不断刷新,我不需要它来刷新。是否有其他方法可以跟踪数据库中的更改?如果有人对数据库进行了更改,是否可以更新数据集?

如何跟踪数据库中的更改

检查SQL Server 2005中引入的查询通知。查询通知允许在数据发生更改时通知应用程序。

使用开源类SqlDependencyEx。它非常容易配置和使用:

int changesReceived = 0;
using (SqlDependencyEx sqlDependency = new SqlDependencyEx(
          TEST_CONNECTION_STRING, TEST_DATABASE_NAME, TEST_TABLE_NAME)) 
{
    sqlDependency.TableChanged += (o, e) => changesReceived++;
    sqlDependency.Start();
    // Make table changes.
    MakeTableInsertDeleteChanges(changesCount);
    // Wait a little bit to receive all changes.
    Thread.Sleep(1000);
}
Assert.AreEqual(changesCount, changesReceived);

希望这能有所帮助。

您可以实现SQLServer通知,而不是当前必须执行的轮询,因此它会在特定的时间间隔后刷新网格。

使用service broker和SqlCacheDependency,您可以实现它,您可以通过本文来实现它。