Delphi / ADO:如何获得Execute()的结果?

时间:2010-05-31 09:20:17

标签: delphi ado

我已声明AdoConnection : TADOConnection;并成功连接到默认的“mysql”数据库(因此,无需传递该代码)。

现在,采取婴儿步骤学习,我想AdoConnection.Execute('SHOW DATABASES', cmdText);似乎工作正常,从某种意义上说它不会抛出异常,但我是一个我不知道的n00b我如何检查命令的结果: - /

HALP!

5 个答案:

答案 0 :(得分:7)

@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;

答案 1 :(得分:2)

您需要的是获得返回的_Recordset 如果您不介意使用Delphi组件,则应使用TADODataSetTADOQuery执行可返回任何结果的SQL命令(或更低级别的TADOCommand s'{ {1}}方法)。
如果你想要一些非常简单的东西,没有所有的VCL balast,那么你想要尝试来自ExplainThatExecute类(MIT许可)。

答案 2 :(得分:1)

您必须使用连接到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; 

此致

答案 3 :(得分:0)

您需要TAdoQuery来执行返回结果的语句。

答案 4 :(得分:0)

如果您只是想填充网格,为什么不使用可采用的?

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访问数组或变体。 或者填充数据集。