我想知道我怎么可以保存查询在内存中的DBGrid显示,Mysql的ZeosLib德尔福XE3
我目前的应用程序使用:
TZConnection> TZquery>数据源> DBGRID
工作正常,但这里的问题是,在通话后ZConnection.disconnect dbgrid被清除
我想在完成查询后立即断开TZConnection,因为大多数MySQL数据库有同时连接的用户数量有限。
我想知道我怎么可以保存查询在内存中的DBGrid显示,Mysql的ZeosLib德尔福XE3
我目前的应用程序使用:
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
方法和数据automaticaly转移到的TClientdataSet。使用TClientDataSet.ApplyUpdates
,您可以将数据推送回数据库。
我使用firebird技术(TIBQuery)。
以下是有关ClientDataSets的一些信息:
A ClientDataSet in Every Database Application
Delphi In Depth: ClientDataSet book
Building Applications With ClientDataSet and InterBase Express
我整个数据复制到一个TClientDataSet或TkbmMemTable但因为你杀的连接,为什么不显示数据(?)一个TListView或TVirtualStringTree? – ComputerSaysNo
你可以举一些例子来将整个数据复制到ClientDataSet,我尝试但没有成功。 – Rebelss
@Rebless这是一个两阶段操作(如果在设计时设置客户端数据集,则为1),这两个阶段是:1)对于查询中的每个“字段”,在“客户端数据集”中创建一个字段,2 )为查询中的每个*记录*,将内容复制到“客户端数据集”,真的很简单直接,这将是一个非常好的练习,玩得开心! – ComputerSaysNo