问题如下:  我用delphi5+oracle8编写常规的c/s数据库应用软件,用的是bde连接数据库。在程序里我用Tquery控件进行对数据的插入操作,用SQL语句:'INSERT INTO TAB_TEMP1...',然后执行。出现问题这样:  1、在两台开发人员用机上,数据可以保存到数据库中,用其他数据库查询软件可以立即查询到数据。  2、在两台非开发人员用机上,每台机子上也显示了自己本机刚刚操作过的数据,即“显示”为保存成功了,比如说第一台机子插入了5条A型的记录,第二台机子上插入了5条B型的记录,第一台机子可以看到自己插入的5条A型的记录,但第二台机子看不到,同样,第二台机子可以看到自己插入的5条B型的记录,但第一台机子看不到。用其他数据库查询软件查询,结果发现,两台机子插入的数据实际上都没有真正插入到数据库。  我觉得这可能跟配置有关,但不知道是具体是哪里出了问题,数据在非开发人员用机上被缓存了,没有真正更新到数据库,希望有这方面经验的朋友指点我一下。不胜感谢。

解决方案 »

  1.   

    问题以很明显了。你的数据没有进到 SERVER 数据库中。而你在返回显示的是 SERVER 数据库中的数据 。仔细看一下你的保存程序。
    再看一个缓存地址的问题,是指定地址的吗?那客户机的内存够大吗?
    还有别的可释放内存的软件在客户机后台运行吗?
      

  2.   

    问题的确是这样的,数据没有保存到数据库中,注销计算机或者重新启动数据就保存到数据库中去了。我的保存程序都加了 commit,在开发人员电脑上都没有产生问题,可见不是程序问题,而客户机的内存是128M,足够运行我的软件。解决这个问题的方法有哪些?请教各位,谢谢
      

  3.   

    在server端用oracle的工具监控一下,看看开发机和非开发机操作时有什么区别
      

  4.   

    你查看一下你用的数据集组件(Tquery或Ttable或Tstoredproc)的属性: Cached Updates!
    当该属性被设置为True时,这样便自动启动了缓冲功能.
    启动缓冲功能的优点是减少了客户机和服务器间的通信次数,提高了服务器性能.但是就像你的操作正好造成了数据的脏读!
    所以我的建议是把这个属性设置为False!接分!!!
      

  5.   

    我的query是把 cachedupdates设置为false的!请注意,是非开发用机有这种情况!!!应该和bde或者其他设置有关!!而且,当我在非开发用机上删除一条数据后,开发用机显示为未删除!!!这时用开发用机删除这条数据,则出现数据表被行锁的问题!!由此可知,非开发用机将sql提交给oracle server,但没有执行,且这条数据被锁定!我个人认为和bde有关.请教高手,不胜感谢~~