如何跟踪数据库中的更改
本文关键字:数据库 何跟踪 跟踪 | 更新日期: 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,您可以实现它,您可以通过本文来实现它。