我是ADO+Access用adoquery1.edit;adoquery.fieldvalues['Nums'] := 1;//原来是0 adoquery.post;执行完提交后,我查过是改变了,但是立即拔电源插座关电,然后重新开机,数据就还是原来的0而不是提交后的1,已测试多次都是这个结果,但是如果先关闭程序,再这样断电非法关机就没有问题,请问为什么,有没有什么解决方法,确保一定可以保存数据?

解决方案 »

  1.   

    数据库管理系统使用了缓冲区等优化加速机制的原因。可以考虑关闭ADOQuery、关闭ADOConnection看看。
      

  2.   

    将LockType改成ltBatchOptimistic,使用于缓存更新,保存的时候用ADOQuery1.UpdateBatch
    或你自己做个标记,默认为False,当程序正常关闭时标记设为TRUE,下次程序启动的时候检查标记为False的数据。
      

  3.   

    我知道这是window系统优化硬盘的问题,但不知道有没有adoquery即时保存到硬盘的方法?
      

  4.   

    回复【hulihui】:已经试过关闭adoconnetion,和adoquery还是不行,不止关闭而且还free了也不行,转用sql更新也不行
      

  5.   

    回复【hulihui】:已经试过关闭adoconnetion,和adoquery还是不行,不止关闭而且还free了也不行,转用sql更新也不行
      

  6.   

    你用的ACCESS会有这种情况,应该是数据缓冲的机制造成的。可以考虑 ADOQUERY.refresh下。
      

  7.   

    谢谢各位留言,今天找了一天msdn终于找到API解决了,谢谢