在 DataGridView 中显示数据表 SQL RealTime

Posted

技术标签:

【中文标题】在 DataGridView 中显示数据表 SQL RealTime【英文标题】:Display data table SQL RealTime in DataGridView 【发布时间】:2013-09-25 14:57:37 【问题描述】:

我正在尝试创建显示从 SQL 中的表到系统 Windows 窗体应用程序中的 DataGridView 的行的应用程序

问题是当我直接从 SQL Management Studio 更新行/其他应用程序正在添加/删除/更新表中的行时,我的应用程序没有显示最新的行

我希望我的应用程序实时显示最新的行(即使其他程序更改表行,我希望我的应用程序显示更新的行)

如何解决?

谢谢

【问题讨论】:

【参考方案1】:

您想要的是名为“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 问题中解释了扩展问题以及如何处理它们:

https://***.com/a/14875804/109122

Is there a scalable alternative to SQL Server Query Notifications for raising events in an application from SQL Server?

【讨论】:

谢谢,我在家的时候试试这个:D【参考方案2】:

您可以使用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) 从数据库引擎接收消息。

【讨论】:

【参考方案3】:

在插入操作时创建触发器。 此触发器必须为您的应用程序触发更新事件。 应用程序接收事件和更新表。

你只需要选择通讯协议

【讨论】:

您可能想解释一下您认为“此触发器必须为您的应用程序触发更新事件”是如何完成的,因为这里的意思远非显而易见。跨度> 是的,请详细说明“触发更新事件”

以上是关于在 DataGridView 中显示数据表 SQL RealTime的主要内容,如果未能解决你的问题,请参考以下文章

C#编程代码如何从数据库中查询并把查询结果显示在dataGridView?

VB.NET 无法更新 datagridview 中的 SQL 数据

给datagridview绑定了数据源后 要其显示怎么办

在 datagridview1 中添加具有全新类型的 SQL Server 数据库数据的新列

C# DataGridView 数据显示到最后一行后,如何使滚动条继续向下滚动。

截断尾随零 datagridview 列