【问题标题】:Continuously updating data in application from database从数据库中不断更新应用程序中的数据
【发布时间】:2010-08-10 16:15:11
【问题描述】:

我正在编写一个应用程序,该应用程序需要从数据库中的视图不断更新其显示的数据。目前,它定期轮询整个数据集并重新显示它。我正在改变它以提高效率,并且对人们对如何最有效地做到这一点的意见感兴趣。

该应用程序是一个 Windows 窗体应用程序并使用 DataGridView 来显示数据。数据库服务器是 SQL Server 2008。

我一直在阅读有关 SQL Server 更改跟踪功能的信息,想知道这是否相关?任何人都可以在这里提出任何好的方法吗?我需要它在应用程序中插入、更新和删除行,而不影响当前选定行的状态或滚动条的位置。

谢谢!

【问题讨论】:

  • 你最终采用了什么方法?

标签: .net winforms sql-server-2008 change-tracking


【解决方案1】:

最简单的方法是按时间戳列查询。当你第一次运行你的应用程序时,它会查询整个数据集并记住最大的时间戳。然后它将使用查询where timestamp > @currentTimestamp 进行轮询并再次记住它。

【讨论】:

  • 有时这些数据也会被删除,我想这需要一个单独的表,其中还需要检查已删除行的主键。我也不想连续轮询数据库;我认为最好在数据更改后立即通知。不过感谢您的回答!
  • @George Xyzzy 收到通知不是来自数据库。那么你必须使用一些面向服务的方法,要么有 web/wcf 服务的消息总线。
【解决方案2】:

如果我要解决这个问题,我会考虑这样做:

  1. 创建 SQL Server 数据库项目
  2. 向项目添加触发器
  3. 让该类(可能使用 MSMQ)向感兴趣的应用程序发送通知 或
  4. 考虑使用该 SQL Server 类注册事件处理程序...不确定如何或是否会起作用,但从触发器向您的应用程序引发事件是理想的

如果您需要,我可以更具体,但这是一般方法

有关 SQL Server 项目中触发器的信息: http://msdn.microsoft.com/en-us/library/938d9dz2.aspx

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 2011-10-05
  • 2016-04-19
  • 1970-01-01
相关资源
最近更新 更多