数据库实时刷新,怎么解决

zheng518 2006-02-07 02:19:13
客户端用ADOQuery、DataSource、DBGrid控件从数据库的相关表中查询数据并在列表框中显示,但是服务器一旦向表中添加更新新的数据,要求客户端立即显示出来。请问各位过路高手,什么方法更好点。一般情况下,都是用定时器实时监控显示数据,但是这样很被动,要频繁的刷新,很消耗系统资源,大家有没有更好的方法。
...全文
574 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlbbwan 2006-03-01
  • 打赏
  • 举报
回复
刚才又见到一个想法,在数据库中加一个“监控表”来监视其他表(也就是你要监视状态的表)的状态,在程序中加一个线程专门监视这个“监控表”
hlbbwan 2006-03-01
  • 打赏
  • 举报
回复
我见过一个实例,它是通过在数据库服务器上加一个常驻内存的程序,他们称之为“过表程序”,也就是当表有变动时由该程序监测并通知客户端。
橘子香水 2006-02-26
  • 打赏
  • 举报
回复
始终需要从服务器获取数据,记录数据的变化状态也不是好办法.
LWWANDVB 2006-02-26
  • 打赏
  • 举报
回复
用三层结构解决!
cjf1009 2006-02-14
  • 打赏
  • 举报
回复
这种问题本是在方案设计时就该解决的,建议改方案吧
zheng518 2006-02-12
  • 打赏
  • 举报
回复
多谢楼上各位的发言,其实总结一下基本上是这几个方面。这几天我也在考虑这个问题。一共想到三种解决途径:一、就是如cjf1009(农民程序员)所言通过socket通讯的方法,服务端添加数据后,发送一个指令告诉所以的客户端,客户端才会主动刷新,这是最好的方法。二、就是通过在SQL数据端写个触发器,但是怎么通知客户端呢,说实话我也不知道怎么实现和能不能实现;三、就是我在开始说的被动定时刷新,但是这种方法不是太可靠,总觉得不妥,目前没有想出更好的方法,还有一种方法正如zahahui(zahahui)所言,也是定时在刷新数据表,但是要分成两个部分,就是先刷新表A,看系统监视的表B是否触发更新(如删除、增加等),如果触发了,就刷新表B,否则就不刷新表B。这样的话,表A只有一条记录,记录表B是否更新(即状态值值是0还是1),系统始终不停的监控表A,只有在表B状态变化时候才刷新表B,效率应该高点。可是目前的问题,客户端和服务器按照方案设计是不用socket的,故第一种方法随好却不能用,不知道除了第三条外还有什么更好的方法。
比尔更痴 2006-02-09
  • 打赏
  • 举报
回复
设个全局变量Lreq,变量存在内存中,不需要访问数据库,就会快.
数据表被修改,由触发器修改程式的Lreq值,程式每10秒检查一次Lreq,若为TRUE则刷新,刷新完后
将Lreq改为false.
但是,我不知道如何远端Lreq的值.
zahahui 2006-02-08
  • 打赏
  • 举报
回复
用定时器实时监控,刷新数据是麻烦。

改为定时查看一个表(字段内容 数据为0或者1)中的数据。

客户端修改,删除,编辑 数据时,把0改为1。

定时查看这个表,如果为0 。对应表就不刷新了。为1,就刷新对应表格。

不知道这样可否?
luxuewei5214 2006-02-08
  • 打赏
  • 举报
回复
笨方法:定时requery
hhnick 2006-02-08
  • 打赏
  • 举报
回复
向客户端发送消息。
must0001 2006-02-08
  • 打赏
  • 举报
回复
这个问题,好像已经见了N次了,但一直没有好的解决方法。定时刷新客户端数据好像是一般的解决方案
GARNETT2183 2006-02-08
  • 打赏
  • 举报
回复
关注...
happypzl 2006-02-08
  • 打赏
  • 举报
回复
一般好象只有这样的方法了!要不可不可以这里,如果有添加数据添加完后发一个指令,然后客户端知道后就更新数据-------只是我一个想法而已,但我也不知道是否可以实现,本人技术不怎么样,只会些简单用法而已!
将计就计123 2006-02-08
  • 打赏
  • 举报
回复
这个有点难
zahahui 2006-02-08
  • 打赏
  • 举报
回复
to slipsun(永远的菜鸟) ( )

我的意思不要濒繁读数据量比较大的表格。

这样速度上面有保证。
cjf1009 2006-02-08
  • 打赏
  • 举报
回复
用socket,
客户端更新数据后,通过socket发信号给服务器端,服务器端负责转发给别的客户端,客户端接收到更新信号后刷新数据库。
slipsun 2006-02-08
  • 打赏
  • 举报
回复
楼上的方法性质不是一样也是频繁的读这个表。
要么做个触发器监控这个表。不过我不知道怎么做。呵呵。

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧