我想知道如何将查询保存在内存中以在 DBgrid 中显示,

我当前的应用程序正在使用:

TZConnection > TZquery > 数据源 > DBgrid

工作正常,但这里的问题是,在调用 ZConnection.disconnect 后,dbgrid 被清理

我想在完成查询后立即断开 TZConnection,因为大多数 MySQL 数据库同时连接的用户数量有限。

最佳答案

使用 TDataSetProvider 将您的查询数据传输到 ClientDataSet。该组件为您完成所有工作。

将以下组件放在您的 DataModule 上,并相应地链接它们:

TZQuery <- TDataSetProvider <- TClientDataSet <- TDataSource

TDataSource.DataSet := TClientDataSet;
TCLientDataSet.ProviderName := TDataSetProvider;
TDataSetProvider.DataSet := TZQuery;

之后只需调用TClientDataSet.Open方法,数据就会自动传输到TClientDataSet中。使用 TClientDataSet.ApplyUpdates ,您可以将数据推回到数据库中。

我将该技术与 firebird (TIBQuery) 一起使用。

以下是有关 ClientDataSet 的一些信息:
A ClientDataSet in Every Database Application
Delphi In Depth: ClientDataSet book
Building Applications With ClientDataSet and InterBase Express

关于Mysql ZeosLib Delphi XE3,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13946584/

10-09 22:10