繁体   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