数据库与程序界面是否能同步?

leo_chenji 2005-10-28 08:49:54
有一个100多人使用的软件(两层结构,SQL数据库),甲打开A表,同时乙打开B表,然后乙处理完B表后会修改到A表中的数据,但甲界面一直开着,怎么样能使甲看到乙修改后的真实数据?
...全文
236 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
must0001 2005-11-07
  • 打赏
  • 举报
回复
我涉及的是打开编辑界面时,先检测除了自己外有没有用户在访问当前记录,如果没有就将自己的用户ID及当前记录ID插入到表里,否则就将当前界面设置为只读,并标识谁在访问,我用这种笨办法来实现某一1:M 的表单中主表数据只能由一个用户更新。
ssq237712 2005-11-07
  • 打赏
  • 举报
回复
消息通知,我的思路:
1、登陆的时候通知服务器程序,服务器上建立一个在线用户列表。
2、客户端操作某表的时候发消息到服务器,订阅某表,记录表名及操作类型(只读、写)
3、客户端修改数据,通过Socket发给服务器,包括修改的表(如果可能也可以包括记录明细)
4、服务器根据在线用户订阅情况发消息到各客户端。
5、客户端根据收到的消息判断是否需要刷新。

我以前做过类似的东西,但自动刷新不是好办法,在客户端程序上加一个刷新按钮好了,有数据时给一个提示,用户自己去决定是否需要刷新。否则,多用户操作时,客户端就不用做其它的事情了,光去刷新了
leo_chenji 2005-11-07
  • 打赏
  • 举报
回复
大家请像哆拉A梦一样伸出援(圆)手,帮帮我!
leo_chenji 2005-11-01
  • 打赏
  • 举报
回复
自己顶一下,怎么没人会吗?
xiaocuo_zrf 2005-10-28
  • 打赏
  • 举报
回复
笨一点。用一个标记表去记录是否被更新。然后前台用一个Timer来控制定时刷新
判断标志表里面是否有记录被更新
刷新当前数据
另外一种方法就是要有一个服务器程序了。
通过Trigger来调用服务端程序向客户段发出刷新消息。
客户段被动的接受到消息后,刷新数据。
sc_arhat 2005-10-28
  • 打赏
  • 举报
回复
关注一下
A0Test 2005-10-28
  • 打赏
  • 举报
回复
我也在考虑同样的问题
那位大哥能指点一下,消息中间件怎么做啊?
leo_chenji 2005-10-28
  • 打赏
  • 举报
回复
to XDvlper:
能不能告诉我具体怎么做,特别是“中间件向所有的客户端发送消息重新取得数据或者用回调函数帮客户端刷新”这个怎么实现?有没有代码?
leo_chenji 2005-10-28
  • 打赏
  • 举报
回复
1、用时间控件刷新不太可能,理论上说只要有60个人同时用,就要隔1秒刷新一次了。
2、消息中间件乙修改后发消息给甲,具体怎么做,能不能详细说明。
XDvlper 2005-10-28
  • 打赏
  • 举报
回复
用定时刷新可以实现,但浪费资源,而且界面总在重绘一闪一闪的,用户会很不爽。
可以试试使用中间件,所有的客户端都通过这个中间件来更新数据,当有客户端调用更新方法或发出更新请求时,中间件向所有的客户端发送消息重新取得数据或者用回调函数帮客户端刷新,这样就可以了,比定时刷新稍微好点,节省了CPU时间,但是需要额外的中间层,把负担都转移到中间层了
mxj2000 2005-10-28
  • 打赏
  • 举报
回复
1。 定时刷新A表
2。 定时刷新时 根据A表中记录的修改时间 决定是否刷新
3。 定时刷新时 根据状态表(记录A表是否已经更新过) 决定是否刷新
4。 消息中间件 乙修改后 发消息给 一甲
5。。。。。
lovendII 2005-10-28
  • 打赏
  • 举报
回复
那就定时刷新,用定时控件,每隔多少时间刷新一次(比如30秒),
这个控件是timer
wlbfeihu 2005-10-28
  • 打赏
  • 举报
回复
学习
leo_chenji 2005-10-28
  • 打赏
  • 举报
回复
请各位高手不吝赐教,有源码的能否贴一下,我总是觉得有定时刷新不太可能,中间件具体怎么写,用三层就能解决此问题吗?
yzty 2005-10-28
  • 打赏
  • 举报
回复
做成三层的吧

2,497

社区成员

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

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