[英]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组件,则应使用TADODataSet
或TADOQuery
来执行可返回任何结果的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.