2011-09-05 79 views
1

我在Delphi中使用Zeoslib來訪問本地MySQL數據庫。Zeoslib:如何判斷查詢是否仍在處理?

我調用存儲過程與TZQuery對象:

ZMakeRankedTable.SQL.Text := 
    'CALL MakeRankedTable(:tableA,:tableB,:SAMP_startTime,:SAMP_endTime,:Hourspan)'; 

此存儲的過程結束了填充的MySQL表值。

我需要訪問這些值,但我不知道MySQL何時完成處理查詢。 我最終在處理完成之前訪問表。

是否有.IsAvailable.IsExecuting財產我可以訪問,以確定我的查詢是否已完成?如果不是,那我該怎麼做呢?

+0

你可以發送更多的信息,代碼片段將是巨大的。 –

回答

3

沒有可用屬性表示您的查詢仍在運行。但是當ZMakeRankedTable.Execute命令終止時,mysql應該已經準備好處理存儲過程了。 因此,我只看到3種情況,您可以在過程結果尚不可用的情況下訪問mysql表。

  • 您從並行線程
  • 你從另一個連接查詢查詢,但 「存儲過程的連接」的交易沒有完成(沒有自動提交,也沒有提交 發生)
  • 你存儲的proc將啓動一個延遲的過程並立即返回 。這是不太可能的,因爲你需要做相當多的工作來 在mysql中有這樣的效果。

mdaems

項目管理員Zeoslib

+0

那麼,它應該有.IsAvailable或.IsExecuting屬性。實際上它應該有一個OnProcessing事件,所以我們可以在主線程用戶vcl中放入一個百分比或動畫。 ;-) – PSyLoCKe