我不是一个Delphi程序员,但我有一个旧的Delphi 7应用程序,我需要修复它并使用ADO。如何防止Delphi ADO将整个表加载到内存中?
数据库表(MS Accesss)包含+ 100,000行,当我设置ADOTable.Active = true时,它开始将整个表加载到RAM中,并占用大量内存和时间。
如何防止ADO加载整个表?我试图设置MaxRecords,但它没有帮助。
基本上所有我们做的是ATT程序的启动:
// Connect to database
DataModule.MyADOConnection.Connected:=true;
DataModule.MeasurementsADOTable.MaxRecords:=1;
// Open datatables
DataModule.MeasurementsADOTable.Active:=true;
设置生效后=真它开始加载整个测量到RAM中,需要时间!
我们使用MSDASQL.1提供程序。也许它不支持MaxRecords属性?
如何在此数据对象中添加一些限制查询以仅从测量中加载TOP 1 *?
我怎么跟我MSACCESS连接的TClientdataSet?你有一些你可以分享的示例代码吗? – Vlad 2012-10-26 17:45:04
@Vlad:过程总是相同的:将TClientDataset(CDS)与TDatasetProvider(DSP)连接起来,然后将属性DSP.DataSet属性指向您要带入数据的ADOQuery。在About.com上的Delphi部分,你可以找到成千上万的例子,也可以在embarcadero docwiki上找到。 – 2012-10-26 18:23:01