按照书上的说法,缓存更新是修改了保存在缓存中的副本。然后调用applyupdates方法,把修改后的内容提交给数据库。这是不是意味着就不和数据集打交道了?如果还是要和数据集打交道,那为什么明明是只读的数据集,一用缓存更新就不是只读了呢?

解决方案 »

  1.   

    难道你用applyupdates可以把更新的数据写回数据库吗?
      

  2.   

    值没有变
    值的地址在变是什么意思?applyupdates,当然可以把更新的数据协会数据库咯
      

  3.   

    当然不是人为的。例如Oracle数据库,用select语句返回的数据集是只读的。这是规定。要想修改,只能用缓存更新的技术。我现在实现了对返回的只读数据集的修改,但就是不明白为什么缓存更新可以做到
      

  4.   

    我没有这么用过,不过我记得oracle的select结果集是可以修改的,可能就是必须用这这种办法才可以。不过我不明白你用oracle数据库,为什么一定要用query来调结果集呢?table一样可以实现这个功能啊,而且我试过delphi5的缓存更新试有问题的,不能进行大批量数据的更新,如果客户端数据集太大的时候会死机的,而且缓存更新在delphi5里面并不想书上介绍的那么好用,很容易出问题。
      

  5.   

    因为在查询方面,table没有query强大。我本来是用的table,但是一直不满意,我觉得用数据集定位的方法进行查询毕竟不是最好的方法。现在虽然缓存更新走通了,但是问题多多。似乎这样做很吃内存。一个数据集,我在程序中关闭后再打开就会报“out of memery".如果只是在程序中打开,就不会,不知道为什么。
      

  6.   

    你的query连接了tupdatasql里使用了update语句呀!