每当更新数据库时更新C#客户端

时间:2010-09-22 11:06:56

标签: c# mysql winforms ado.net

我正在使用带有C#/ Visual Studio 2008的MySQL。我需要知道任何方法,以便如果一个用户更新数据库,通过网络登录的所有用户都会收到通知已发生更改的通知。 如果我通过我的应用程序登录数据库,那时数据库中最新记录的序列号是10,然后我有权限的人更新数据库中的记录,同时我被通知数据库已更新为新记录。 常见的例子可以是MSN messenger在线上时对朋友的警报...... 虽然我真的不想要那个弹出窗口,但警报功能就像那样......

还有一件事要问: 我想要一个功能,如果记录的状态没有更新(比如说超过3个小时),那么我希望所有用户也能对这个问题保持警惕。所有记录都需要此功能,而不是专门用于新记录。

3 个答案:

答案 0 :(得分:2)

答案很长,但你最好的选择就是SqlCacheDependency

此外,您可以使用“反向AJAX”技术,该技术由Google Mail通知使用,并在此处进行了讨论:How does incoming mail notification on Gmail works?

除了这两个,你自己的其他选项AFAIK是简单的服务器轮询。

此外,您尚未提及客户端的内容。

它是互联网上的公共网站吗?它是一个Intranet应用程序,它是一个WPF应用程序吗?

如果它是一个网站,你最好的是使用我提到的反向AJAX技术的客户端回调。

答案 1 :(得分:1)

您可能需要在客户端中设计某种轮询功能。例如,您可以每分钟发送一个请求数据库的请求“自[客户端最新更新日期]以来您是否更新过任何内容?”如果数据库回答true,则让客户端请求完整的更新集。如果没有,你让它再睡一分钟。

答案 2 :(得分:-1)

使用SqlDependency类是一种更好的方式,可以更快,更高效地驱动所有数据。它只是消除了每次在数据中进行更改时不断重新查询数据库的需要。