我正在使用C#开发一个Windows窗体应用程序。我正在显示一个网格,其值来自数据库。 我的问题是如何通过任何方法在数据库中进行更改时更新网格。
我试过SqlDependency class。但是,我的网格不断刷新,我不需要刷新。 有没有其他方法来跟踪数据库中的更改? 如果数据库中有任何更改,是否可以更新数据集?
答案 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);
希望这有帮助。