我用 VC6sp6 + ADO + Access2000 + win2ksp4 的环境下,因为我要用到book,我在打开纪录前
加上 pMyRecord->CursorLocation = adUseClient; ,但运行到pMyRecord->Open(...)的时候,就狂写硬盘而且慢到耗尽机器虚拟内存崩溃为止???测试结果如下:数据库尺寸:1.2G 存放图像CPU:双PIII500,RAM:384M(SDRAM),虚拟内存:574M =》运行约半小时后崩溃;
CPU:PIII550E,RAM:192M(SDRAM),虚拟内存:256M =》运行约半小时后崩溃;
CPU:AMD Athlon(tm) XP 2400+,RAM:512M(DDRAM),虚拟内存:667M =》运行正常;*注意:只要我将“pMyRecord->CursorLocation = adUseClient;”这一句去掉,它在三太机器上运行
的速度都比较满意,但无法实现book功能啦!请问是我的机器的原因还是什么原因?
                                                                 先谢谢了!

解决方案 »

  1.   

    是把全部数据一次性读出,但为什么不加“pMyRecord->CursorLocation = adUseClient;”就可以,加了就不行?
      

  2.   

    pMyRecord->CursorLocation = adUseClient表示ADO使用客户端游标,会把符合条件的记录通过网络传送到客户机上并存储在应用程序进程内,如果数据量大,客户机肯定吃不消。。但如果你不写这一句,ADO将使用服务器端游标,记录将存储在数据存储区进程内(即数据库服务器上),当然就对客户机没有什么影响了。。
      

  3.   

    你是指数据库安装在本机? 那样也要用服务器端游标,因为服务器端游标会自动控制返回的记录数,除非你调用了GetRecordCount之类的函数,服务器端游标就不会有速度优化了。。
      

  4.   

    如果要求能够使用Book、打开纪录快,有没有什么好的解决方案呢?                                                               谢谢!
      

  5.   

    用SQL语句控制返回的记录集数量:select top 23 from table
      

  6.   

    ADO + Access2000 哦,top、limit试验了一下它都说语法错!                                                        谢谢啦!
      

  7.   

    不好意思,写错了,应该是select top 23 * from table
      

  8.   

    问题已解决,非常感谢tabby(-_-! .. 内存泄漏)、 oyljerry(☆勇敢的心☆-要开始写论文了) 的热心帮助,希望以后各位前辈多多关照!                                                                       谢谢!