日期:2014-05-18  浏览次数:20977 次

winform 实时显示数据库服务器数据
我的问题是这样的,我曾经用SqlDependency实现了数据库通知机制,来实现数据库数据实时变化时,客户端数据也实时变化,但经过查阅相关资料,发现SqlDependency有限制,微软说明并发客户端用户最好不能多余10个,不然会给服务器带来很大资源压力。曾经也有Timer实现实时读取数据库数据,并实时在界面更新,但也很耗资源。

我的需求是这样的,我的数据库有个表的数据是随数据源实时更新的,而我所需要的就是将该变变化的数据实时显示到winform界面上,除了SqlDependency和Timer以外,还有什么好的办法或机制,或什么好的架构来实现这种客户端数据库服务器之间的数据实时性更新,Socket,WebService方面不熟悉,麻烦高手如果有这方面的解决方案能给点源码或例子,谢谢啦。就100分全押上了。

------解决方案--------------------
实时更新不现实,还是用Timer定时去新建一个数据库连接再select一下吧
------解决方案--------------------
使用内存数据库如何?

不知你的数据结构有多复杂,
若是不复杂,也可以考虑在内存自己组织数据

若是复杂,那么研究下内存数据库。。。我自己也不会。^_^
------解决方案--------------------
我记得以前我是在服务器sql中写触发器,发觉数据更改时调用命令去写服务器本地文件,然后用文件监视器去对文件进行监控,一但文件变换就相当于数据变化。
------解决方案--------------------
探讨
我记得以前我是在服务器sql中写触发器,发觉数据更改时调用命令去写服务器本地文件,然后用文件监视器去对文件进行监控,一但文件变换就相当于数据变化。

------解决方案--------------------
up up up
------解决方案--------------------
关键是你数据库中的数据是通过什么程序来更新的,可以考虑在那个操作数据库的程序中添加事件通知,通知其它程序来刷新他们的数据。
------解决方案--------------------
起一个线程,做一个循环(类似死循环)一直保持数据库通信。将所需数据显示出来。
------解决方案--------------------
探讨
起一个线程,做一个循环(类似死循环)一直保持数据库通信。将所需数据显示出来。

------解决方案--------------------
定时重新加载数据。
------解决方案--------------------
。。。。。。
试试才知道。
------解决方案--------------------
timer你可以设置时间间隔呀,
------解决方案--------------------
timer不用线程不行。
WebService吧,
在一个主机上写一个webservice,然后在客户机上引用下远程调用吧,
哦,webservice貌似基于浏览器的。
------解决方案--------------------
提供一个方案,没测试过可行度。

SQLSERVER2008支持文件流,你可以考虑使用SQLSERVER2008,通过触发器直接写磁盘文件,而C#有个方法可以监视磁盘文件改动的,一旦磁盘文件改动,就触发事件,这样就可以让程序去主动读取数据库了。
------解决方案--------------------
探讨
补充一下:数据变化是秒级的,所以才不像用定时器

------解决方案--------------------
C#偶是完全新手,不过你的问题应该不限于C#,

看了上面的回复,我觉得你应该分两部分实现功能

现在一个服务器上,或者就在数据库服务器上做个数据变化探测程序

由这个程序定时探测数据库变化,存储变化数据,然后N台客户端访问这个代理程序
------解决方案--------------------
我的意思是,如果需要取得的数据不多,不复杂的话,就直接取最新的数据在探测程序里留存。
------解决方案--------------------
pull or push 是个问题, 是个大问题
------解决方案--------------------
探讨
这位大哥,请假下可否利用Socket来实现,比如通过Socket与服务器建立连接,然后在服务器端通过一个服务程序(这个正在想怎么做),客户端不与服务器数据库直接交互,而与这个服务程序交互。安全性也好点。

------解决方案--------------------
1.第一次全部查询出来
2.通过触发器通知应用程序,update delete insert 然后删除界面那些存在的
------解决方案--------------------
sql server 支持多个订阅数据库和发布数据库的同步,让客户端到订阅数据库上去读数据吧
------解决方案--------------------
主题:两个sql server数据库同步数据(转贴)
http://www.javaeye.com/topic/82511
------解决方案--------------------