gpt4 book ai didi

c# - 每次 SQL Server 表更改时,如何让 Windows 窗体客户端更新?

转载 作者:太空狗 更新时间:2023-10-29 23:42:42 24 4
gpt4 key购买 nike

我有一个表单,其中包含一个显示数据库信息的列表。每当数据库中发生某些变化时,我希望列表实时(或几乎实时)更新。这些是我能想到的实现此目的的三种方法:

  • 在客户端上设置一个计时器,每隔几秒检查一次:我现在知道该怎么做了,但这需要每小时建立和关闭与数据库的新连接数百次,无论是否有任何变化
  • 构建某种类似 TCP/IP 聊天服务器的东西,每次程序更新数据库时,它也会向 TCP/IP 服务器发送一条消息,而 TCP/IP 服务器又会向客户端的表单发送一条消息:我有现在不知道该怎么做
  • 创建一个返回表最后一次更改的日期和时间的网络服务,客户端会将那个时间与客户端最后一次更新的时间进行比较:我可以弄清楚如何构建网络服务,但是无论如何,我不知道如何在不连接到数据库的情况下执行此操作

第二个选项似乎不太可靠,第一个选项似乎会消耗比必要更多的资源。有没有什么方法可以在每次数据库发生变化时告诉客户端而不是每隔几秒就建立一个连接,或者与数据库建立那么多连接不是什么大事吗?

最佳答案

试试 SqlDependency class .只要 SqlCommand 的结果发生变化,它就会触发 OnChange 事件。

编辑:

请注意,如果您的程序有大量副本在运行,可能会产生过多的服务器负载。如果您的应用将公开发布,这可能不是一个好主意。

另请注意,它可以在不同的线程上触发事件,因此您需要使用 Control.BeginInvoke 来更新您的 UI。

关于c# - 每次 SQL Server 表更改时,如何让 Windows 窗体客户端更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1099301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com