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

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

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

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

如何解决?

谢谢

【问题讨论】:

    标签: c# sql-server winforms datagridview


    【解决方案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://stackoverflow.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】:

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

      你只需要选择通讯协议

      【讨论】:

      • 您可能想解释一下您认为“此触发器必须为您的应用程序触发更新事件”是如何完成的,因为这里的意思远非显而易见。跨度>
      • 是的,请详细说明“触发更新事件”
      猜你喜欢
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多