4

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

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

TZConnection > TZquery > 数据源 > DBgrid

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

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

4

1 回答 1

4

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

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

TZQuery <- TDataSetProvider <- TClientDataSet <- TDataSource

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

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

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

以下是有关 ClientDataSets 的一些信息:
每个数据库应用程序中的 ClientDataSet
Delphi 深度:ClientDataSet 书籍
使用 ClientDataSet 和 InterBase Express 构建应用程序

于 2012-12-19T07:38:58.337 回答