我想知道如何将查询保存在内存中以在 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/