1

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

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

4

3 回答 3

2

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

于 2013-09-05T09:06:51.053 回答
1

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

使用service broker和SqlCacheDependency,可以实现,可以通过这篇文章来实现。

于 2013-09-05T09:07:36.843 回答
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);

希望这可以帮助。

于 2016-01-08T02:18:16.423 回答