[已解决问题] Winform根据数据库表的更新而更新
提问时间: 2007-12-11 21:12
悬赏分:30 浏览:654 次
想实现这样的功能,在A机器上更新数据库之后,B机器上运行的该程序能够马上更新界面,使得其界面的内容跟数据库中的内容相符。
语言用的是C#,数据库是MySql

希望回答得能够具体一点!


问题补充:A跟B运行的是同一个应用程序

如果用MySql触发器,它是怎样通知应用程序的?
能不能具体点!


最佳答案
程序加一个功能:发送触发通知/接收触发通知
A机数据更新后对外发送触发通知,B机收到后即更新数据,这样可以减少数据服务器压力
2007/12/12 16:06:57 回答者:随机


提问者对于答案的评价:感觉还是这样可以减少数据库操作! 谢谢啊! 随便问一句,能否在接到通知的时候,发个消息给主线程,让主线程来出来界面的更新? 怎么做?
其它回答(7)
有两个思路:
1. 程序中设置一个Timer,定时查询数据库,更新界面
2. 数据库中建一个触发器,一有改变就通知程序(不知道MySql有没有这个功能)
仅供参考
7个月前   回答者:麒麟.NET - 菜鸟二级
MySql 5支持触发器了
7个月前   回答者:Elden - 菜鸟二级
是啊,使用一个触发器..
7个月前   回答者:Zhuang miao - 菜鸟二级
用触发器比较好
7个月前   回答者:AndyFish - 小虾三级
用Timer比较好,只要每个客户端定时查询数据库服务器就可以了。
MySQL触发器如何通知应用程序?
7个月前   回答者:Anders Cui - 小虾三级
我个人也觉得用Timer控件定时查询数据库好些,不过这样客户端都会定时查询数据库,给数据库服务器带来一定的压力,尤其是客户端比较多的情况下!
数据库表触发器如何更新客户端的数据显示呢?不知道怎么实现的。
7个月前   回答者:刚刚 - 老鸟四级
印象中,SQL Server的触发器可以使用C++写。不知道MySql有没有这样的功能。

我也认为Timer比较好,可以有效的降低程序和服务器的耦合。关于性能,我觉的可以在数据库中保存一个表,其中就一个字段和一行。存储一个递增的整型量。

每次更新数据库的时候,同时将这个量递增一。客户端通过查询这个值来确定是否读取具体的业务数据。

呵呵,自己写一个服务,专门负责维护这个值,而不需要存储到SQL Server中,可能性能更好。毕竟,数据库连接资源也是一个非常稀缺的资源。尽量少用。
7个月前   回答者:Colin Han - 老鸟四级
评论
7个月前   刚刚 :
网友随机,你的方法不错,不过不知道会不会在并发的时候产生什么丢Socket包的问题,有些担心这个,而且客户机上还要安装一个收发Socket包的Windows服务之类的模块!
7个月前   随机 :
功能集成到客户端即可,
对于并发,可以用队列来缓冲
6个月前   随机 :
为什么非要用主线程来更新呢?B机接收到消息后即调用更新的方法,如果再回发的话,耗时又耗力
6个月前   菩提树下的杨过 :
message queue ,微软现成的msmq完全可以满足你的要求,A程序有数据修改后,发送到消息队列,B程序监听消息队列,有内容就马上更新
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除