缓存数据集的建议

时间:2010-10-07 10:07:20

标签: delphi caching devart

我想执行以下操作:

1)打开数据集(使用TMSQuery,SDAC DevArt组件)

2)将内容缓存到磁盘(想象一下cutomers列表)

3)下次我需要打开数据集时,我将首先使用缓存数据填充它,然后我将通过调用TMSQuery.RefreshQuick方法刷新它。

通过这种方式,我计划获得速度的实质性改进,因为我不需要检索我在之前的应用程序运行中检索过的记录。

如何获得此缓存?我有许多带有TMSQuery的数据模块,所以不知何故我想有一个全局例程来检查每次我尝试打开一个TMSQuery,如果该查询以某种方式被标记我将尝试从缓存中恢复,调用RefreshQuick,以防这个失败我将致电Open。​​

你能建议吗?

(我使用Delphi 2009和SDAC 4.80)

2 个答案:

答案 0 :(得分:3)

您可以使用TClientDataSetTDataSetProvider组件,以这种方式连接组件。

TMSQuery-> TDataSetProvider->的TClientdataSet

TClientDataSet是保留和检索磁盘数据的一个很好的替代方法。

有关ClientDataset

的更多信息,请参阅这些链接

答案 1 :(得分:1)

你可以做两件事:

  1. 创建TMSQuery组件的后代并覆盖Open函数 (使用TMSQuery搜索所有数据模块.dfm和.pas文件,并用TCachedTMSQuery替换)
  2. 绕过/挂钩TMSQuery.Open(运行时修补)
相关问题