我正在使用 C# 开发一个 Windows 窗体应用程序。我正在显示一个带有来自数据库的值的网格。我的问题是如何通过任何方法在数据库中进行更改时更新网格。
我试过SqlDependency 类。但是,我的网格会不断刷新,我不需要它来刷新。有没有其他方法可以跟踪数据库的变化?如果有人在数据库中进行了更改,是否可以更新数据集?
我正在使用 C# 开发一个 Windows 窗体应用程序。我正在显示一个带有来自数据库的值的网格。我的问题是如何通过任何方法在数据库中进行更改时更新网格。
我试过SqlDependency 类。但是,我的网格会不断刷新,我不需要它来刷新。有没有其他方法可以跟踪数据库的变化?如果有人在数据库中进行了更改,是否可以更新数据集?
检查SQL Server 2005 中引入的查询通知。查询通知允许在数据更改时通知应用程序。
您可以实现 SQLServer 通知,而不是当前必须执行的轮询,因此它会在特定时间间隔后刷新网格。
使用service broker和SqlCacheDependency,可以实现,可以通过这篇文章来实现。
使用开源类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);
希望这可以帮助。