如何跟踪数据库中的更改

时间:2013-09-05 08:59:30

标签: c#

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

我试过SqlDependency class。但是,我的网格不断刷新,我不需要刷新。 有没有其他方法来跟踪数据库中的更改? 如果数据库中有任何更改,是否可以更新数据集?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

使用服务代理和SqlCacheDependency,你可以实现它,你可以通过这个article来实现它。

答案 2 :(得分:1)

使用开源类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);

希望这有帮助。