delphi数据库实时更新的问题

SOTRUST 2008-07-05 10:45:30
大家好,我想问题一下,当数据发生变化,(比如,insert,update,delete等等)程序可不可以根据数据库的变化自动实时更新内容。

当客户端有人更改数据库内容,其它客户端的程序相应内容也跟着自动变化。

不知道应该怎么做,我是用TListView来显示内容的,TListView本身应该不会有自动实时更新的功能吧?

希望大家指点!谢谢!
...全文
440 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
SOTRUST 2008-07-12
  • 打赏
  • 举报
回复
我的基础太差,暂时放弃做这个功能了,先学习一下基础。以后再考虑这个问题了。目前我是没有办法做到这个功能了,

呵呵,还是谢谢大家参与帮忙,谢谢!
Harryfin 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 SOTRUSTX 的回复:]
利用timer刷新,界面明显在闪动,每刷新一下,界面就会闪一下,
[/Quote]
可以自己解释取回来的数据集,这样就能做到“无刷新”。WEB也是类似这样的。
SOTRUST 2008-07-07
  • 打赏
  • 举报
回复
利用timer刷新,界面明显在闪动,每刷新一下,界面就会闪一下,

我是用ADOQuery和listview显示数据

而且只刷新ADOQuery还不行,还得重新加载listview。两个控件需要同时刷新。否则无效!

如果定时刷新我觉得服务器肯定吃不消,崩溃是迟早的事。如果用消息通知程序刷新可能不错,关键是我不懂得应该怎么做。
Harryfin 2008-07-07
  • 打赏
  • 举报
回复
能不能考虑在中间服务器做缓存呢?

至于定时器的话,如果不是真的要很“实时”(例如说可以2~3秒刷一次,大不了给客户自己设),而且LOAD出来的数据量也不大的话,我觉得用TIMER可以吃得销。编辑状态时自动停止刷新,编辑完再继续。

我也想学习下这问题的处理。
阿三 2008-07-06
  • 打赏
  • 举报
回复
如果只浏览,可以采用 socket,但这个需要做一个三层结构来实现了,比较麻烦。
最简单的,你可以在数据库中做个触发器,如果有变化可以存在一个表中(针对多个客户端,可以每个客户端都存一个变化的状态)然后客户端用一个timer来扫描,有变化了就自动刷新一下并更改状态值为未改变状态。
starluck 2008-07-06
  • 打赏
  • 举报
回复
定时刷新,或SOCK广播.但说实话很影响服务端的性能.最好根据实际需求改变下思维,换个方式.
cncharles 2008-07-06
  • 打赏
  • 举报
回复
做一个时间标记字段, 成功更新时更新此字段, 每个客户端定时对比此字段. 或者用Socket广播
SOTRUST 2008-07-05
  • 打赏
  • 举报
回复
没错,就是用来浏览的,偶尔也会来用操作,只是记录被选中的ID,传递到另一个窗体操作。主窗体本身并不直接操作的。
SOTRUST 2008-07-05
  • 打赏
  • 举报
回复
我刚学习delphi,我在模拟做一个酒店管理的实时房态。看别人都弄出来了,我觉得该研究一下。

用定时器可以达到这个功能,但我觉得用定时刷新不是个办法,如果几十台机器同时运行,平均每秒刷新一次,那么数据库服务器肯定吃不消。

xiangzi15 2008-07-05
  • 打赏
  • 举报
回复
你想要做什么啊?有必要实时更新吗?我觉得大多数程序好像没那个必要,可以在用户执行某些操作时更新一下。
SOTRUST 2008-07-05
  • 打赏
  • 举报
回复
呵呵,我也想过这样,可以每秒钟更新三到五次,感觉上和实时更新没什么区别,我怕这样会消耗内存。影响程序正常运行。有没有更实际的方法。
JeffChung 2008-07-05
  • 打赏
  • 举报
回复
最简单就是在客户端用定时器,定时更新一下数据了——但这不是实时的。
阿三 2008-07-05
  • 打赏
  • 举报
回复
实时的不好弄,除非你的这个界面只是浏览。
假设你正在修改你的数据,这时来个实时刷新,那么你的操作是保留呢还是不保留呢。
SOTRUST 2008-07-05
  • 打赏
  • 举报
回复
socket怎么用?能不能说详细点?
shuihan20e 2008-07-05
  • 打赏
  • 举报
回复
有一种办法,用socket来通讯,数据库有变化时,服务器端向每个客户端发消息,使其刷新
shuihan20e 2008-07-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 JeffChung 的回复:]
最简单就是在客户端用定时器,定时更新一下数据了——但这不是实时的。
[/Quote]

酒店的实时房态,一个酒店会有多少个前台来登记日志,好像没有必要吧
liangpei2008 2008-07-05
  • 打赏
  • 举报
回复
不好做!

2,498

社区成员

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

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