问个问题:关于数据库的及时刷新(两个应用程序,不是一个哦)。

boatzm 2005-03-24 09:25:03
一个应用程序A添加或者删除一条记录后,好像要等1秒才能提交到数据表中。

另外一个应用程序B能马上select到这个数据,(我select之前用了)
qry.close();
qry.open();
但是总是要隔1秒,才能得到。

能不能做到立即得到呢??注意:是两个应用程序。一个应用程序使用close,open没有问题。
试了很多方法都不行。郁闷ing。还有用Refresh要出异常耶。

谢谢了先。欢迎大家踊跃提点意见先。好像跟缓存有关系??
...全文
166 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
boatzm 2005-03-26
  • 打赏
  • 举报
回复
呵呵,两个应用程序在一台电脑上面运行。(不涉及网络)

其中一个插入或删除,另外一个查询。要求查询方能立即响应到刚刚提交的东西。
boatzm 2005-03-26
  • 打赏
  • 举报
回复
我做的Demo就是小表,条数只有5-10条,没有索引。
而且也是close,再open, 一个进程没有问题,两个进程有1m(左右)的延时。但是1m后能得到正确结果。

2.读取部分用一线程不停地扫描数据表,可以Sleep(20)什么滴
// 这个不符合我的需求,因为取数据一方不知道是否有数据,不可能做这种循环的等到,需要取一次就取到结果,不管是有还是没有,都要求返回的。

不过,还是谢谢大家的参与,感谢skertone() 的关注。

谢谢,我先结贴(都发了一两天了)有好方法可以email我squirrelzm@xinhuanet.com
skertone 2005-03-26
  • 打赏
  • 举报
回复
你要想在两个进程间通过数据表传递数据

可以用以下方法实现比较快的速度

1.用一个专用的小表来传递数据,此表不需加索引

2.读取部分用一线程不停地扫描数据表,可以Sleep(20)什么滴

3.数据用完即删除使表尽可能小


---------你试过没有? 俺已经用这种最差的方案成功实施了好几个项目

后画改成了UDP包通知,服务端集中处集数据方式

记住,刷新数据用DataSet.Refresh是不行滴 得 Close 再 Open!!!
boatzm 2005-03-25
  • 打赏
  • 举报
回复
to skertone() :

谢谢你的回复,我的测试数据库已经非常小了就2个字段。

而且读取部分不是为了得到结果,我只会执行一次查询,看结果是否存在,因为不能保证要查询的值存在,所以不可能做循环来判断,一定要立即返回。

所以问题在,一个AP提交后,第二个AP不能马上得到结果。
skertone 2005-03-25
  • 打赏
  • 举报
回复
你要想在两个进程间通过数据表传递数据

可以用以下方法实现比较快的速度

1.用一个专用的小表来传递数据,此表不需加索引

2.读取部分用一线程不停地扫描数据表,可以Sleep(20)什么滴

3.数据用完即删除使表尽可能小
skertone 2005-03-25
  • 打赏
  • 举报
回复
呵呵,字段是少,但是记录条数呢?

一个提交后,另一台机器上滴进程知道该何时去查询吗?即使实现这个机制也需要循环查询直到预定义的超时!!

不过俺还是不太明白你想实现一个怎样的设计。。。
boatzm 2005-03-25
  • 打赏
  • 举报
回复
这个跟优先级没有关系吧,因为insert的操作已经结束了。再执行的查找
rockmanhqu 2005-03-25
  • 打赏
  • 举报
回复
select 好象比update和insert 优先级更高吧。
boatzm 2005-03-25
  • 打赏
  • 举报
回复
谢谢各位得意见。

我认为问题还是出在提交上面,因为我下断点跟了一下,发现执行完 ExecuSQL后,数据并没有提交到数据库(这边用Access看数据),

所以我想可能有个立即更新得问题。我用了服务器模式,应该是直接和数据库操作吧,还是不行。


to:luxuewei5214(小卢)
谢谢你得方法,我也这样想过,但是这个时间不好控制,和电脑得差异性很大,配置低得电脑是不是要sleep(2000)呢?呵呵。

而且我得程序也不允许这样漫长得延时。
luxuewei5214 2005-03-25
  • 打赏
  • 举报
回复
我也遇到过此类问题,好像没法解决,写数据库总是要花时间的,用sleep(1000)等一会吧,可以把等待的时间改短试试,直到最小并能取到数据。高手们有没有更好的办法呢?
eyusir 2005-03-25
  • 打赏
  • 举报
回复
虽然window是多线程,但也有个前后顺序,如果A只是简单的一条记录更新,那么B所花时间肯定你无法判断是0.001秒还是1秒或两秒,都有可能,但A有很多上万条,那B花时间更长了.
g961681 2005-03-24
  • 打赏
  • 举报
回复
存取终究是要花点时间的啊!
你的系统要求要那么高吗?
godlessme 2005-03-24
  • 打赏
  • 举报
回复
友情up,长点人气。我们不能拉下任何一位阶级兄弟。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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