我想知道我怎麼可以保存查詢在內存中的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