一个应用程序A添加或者删除一条记录后,好像要等1秒才能提交到数据表中。另外一个应用程序B能马上select到这个数据,(我select之前用了)
qry.close();
qry.open();
但是总是要隔1秒,才能得到。能不能做到立即得到呢??注意:是两个应用程序。一个应用程序使用close,open没有问题。
试了很多方法都不行。郁闷ing。还有用Refresh要出异常耶。谢谢了先。欢迎大家踊跃提点意见先。好像跟缓存有关系??

解决方案 »

  1.   

    虽然window是多线程,但也有个前后顺序,如果A只是简单的一条记录更新,那么B所花时间肯定你无法判断是0.001秒还是1秒或两秒,都有可能,但A有很多上万条,那B花时间更长了.
      

  2.   

    我也遇到过此类问题,好像没法解决,写数据库总是要花时间的,用sleep(1000)等一会吧,可以把等待的时间改短试试,直到最小并能取到数据。高手们有没有更好的办法呢?
      

  3.   

    谢谢各位得意见。我认为问题还是出在提交上面,因为我下断点跟了一下,发现执行完 ExecuSQL后,数据并没有提交到数据库(这边用Access看数据),所以我想可能有个立即更新得问题。我用了服务器模式,应该是直接和数据库操作吧,还是不行。
    to:luxuewei5214(小卢) 
    谢谢你得方法,我也这样想过,但是这个时间不好控制,和电脑得差异性很大,配置低得电脑是不是要sleep(2000)呢?呵呵。而且我得程序也不允许这样漫长得延时。
      

  4.   

    select 好象比update和insert 优先级更高吧。
      

  5.   

    这个跟优先级没有关系吧,因为insert的操作已经结束了。再执行的查找
      

  6.   

    你要想在两个进程间通过数据表传递数据可以用以下方法实现比较快的速度1.用一个专用的小表来传递数据,此表不需加索引2.读取部分用一线程不停地扫描数据表,可以Sleep(20)什么滴3.数据用完即删除使表尽可能小
      

  7.   

    to skertone() :谢谢你的回复,我的测试数据库已经非常小了就2个字段。而且读取部分不是为了得到结果,我只会执行一次查询,看结果是否存在,因为不能保证要查询的值存在,所以不可能做循环来判断,一定要立即返回。所以问题在,一个AP提交后,第二个AP不能马上得到结果。
      

  8.   

    你要想在两个进程间通过数据表传递数据可以用以下方法实现比较快的速度1.用一个专用的小表来传递数据,此表不需加索引2.读取部分用一线程不停地扫描数据表,可以Sleep(20)什么滴3.数据用完即删除使表尽可能小
    ---------你试过没有? 俺已经用这种最差的方案成功实施了好几个项目后画改成了UDP包通知,服务端集中处集数据方式记住,刷新数据用DataSet.Refresh是不行滴 得 Close 再 Open!!!
      

  9.   

    我做的Demo就是小表,条数只有5-10条,没有索引。
    而且也是close,再open, 一个进程没有问题,两个进程有1m(左右)的延时。但是1m后能得到正确结果。2.读取部分用一线程不停地扫描数据表,可以Sleep(20)什么滴
    // 这个不符合我的需求,因为取数据一方不知道是否有数据,不可能做这种循环的等到,需要取一次就取到结果,不管是有还是没有,都要求返回的。 不过,还是谢谢大家的参与,感谢skertone() 的关注。谢谢,我先结贴(都发了一两天了)有好方法可以email我[email protected]