我正在尝试创建显示从 SQL 表到系统 Windows 窗体应用程序中的 DataGridView 的行的应用程序
问题是当我直接从 SQL Management Studio 更新行/其他应用程序正在添加/删除/更新表中的行时,我的应用程序没有显示最新的行
我希望我的应用程序实时显示最新的行(即使其他程序更改表行,我希望我的应用程序显示更新的行)
如何解决这个问题?
谢谢
我正在尝试创建显示从 SQL 表到系统 Windows 窗体应用程序中的 DataGridView 的行的应用程序
问题是当我直接从 SQL Management Studio 更新行/其他应用程序正在添加/删除/更新表中的行时,我的应用程序没有显示最新的行
我希望我的应用程序实时显示最新的行(即使其他程序更改表行,我希望我的应用程序显示更新的行)
如何解决这个问题?
谢谢
您想要的是名为“SQL 查询通知”的 MS SQL Server 工具,此处介绍:http ://technet.microsoft.com/en-us/library/ms130764.aspx 。
预先警告,这并不简单,它可能对多个客户端有一些扩展问题。
一个很好的教程实现在这里: http: //www.codeproject.com/Articles/144344/Query-Notification-using-SqlDependency-and-SqlCach
扩展问题的解释以及如何处理它们在这些其他 SO 问题中:
你可以使用SqlDependency
类。它的预期用途主要用于 ASP.NET 页面(客户端通知数量较少)。
ALTER DATABASE UrDb SET ENABLE_BROKER
实现 OnChange 事件以获取通知:
void OnChange(object sender, SqlNotificationEventArgs e)
And in code:
SqlCommand cmd = ...
cmd.Notification = null;
SqlDependency dependency = new SqlDependency(cmd);
dependency.OnChange += OnChange;
它使用 Service Broker (a message-based communication platform)
从数据库引擎接收消息。
在插入操作上创建触发器。此触发器必须为您的应用程序触发更新事件。应用程序接收事件并更新表。
您只需选择通信协议