簡體   English   中英

Delphi / ADO:如何獲得Execute()的結果?

[英]Delphi / ADO : how to get result of Execute()?

我已經宣布了AdoConnection : TADOConnection; 並成功連接到默認的“mysql”數據庫(因此,無需傳遞該代碼)。

現在,采取寶寶步驟學習,我想AdoConnection.Execute('SHOW DATABASES', cmdText); 這似乎工作正常,從某種意義上說它不會拋出異常,但我是一個n00b,我不知道如何檢查命令的結果: - /

HALP!

@mawg, SHOW DATABASES命令返回一個名為'Database'的列的數據集,因此您可以使用TADOQuery組件來讀取數據。

試試這段代碼。

var
  AdoQuery : TADOQuery;
begin
   AdoQuery:=TADOQuery.Create(nil);
   try
    AdoQuery.Connection:=AdoConnection;
    AdoQuery.SQL.Add('SHOW DATABASES');
    AdoQuery.Open;
    while not  AdoQuery.eof do
    begin
      Writeln(AdoQuery.FieldByname('DataBase').AsString);
      AdoQuery.Next;
    end;
   finally
   AdoQuery.Free;
   end;


end;

你需要的是到達返回的_Recordset
如果您不介意使用Delphi組件,則應使用TADODataSetTADOQuery來執行可返回任何結果的SQL命令(或更低級別的TADOCommand的' Execute方法)。
如果你想要一些非常簡單的東西,沒有所有的VCL balast,那么你想要從ExplainThat (MIT許可)嘗試TADOWrap類。

您必須使用連接到TADODataBase的TADOQuery。 在屬性SQL中,您必須包含SQl statament以在SGDB中檢索數據庫。 在SQL Server中,您可以這樣做:

SELECT * FROM sysdatabases

在MySQL中必須存在類似於檢索名稱的東西。

您可以將此TADOQuery連接到TDataSource和DBGrid以查看可視結果或使用代碼來探索查詢結果(有些類似於此):

ADOQuery1.Open;
while not ADOQuery1.eof do begin
  Name := ADOQuery1.FieldByName('DBName').AsString;
  ADOQuery1.Next;
end; 

問候

如果您只想填充網格,為什么不使用adotable?

Adotable.open;
Adotable.first;
While NOT adotable.eof do(not sure about not or <>)
Begin
Put values in variant or array;

Adotable.next;
End

然后,您可以讓任何UI訪問數組或變體。 或填充數據集。

您需要TAdoQuery來執行返回結果的語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM