我已声明AdoConnection : TADOConnection;
并成功连接到默认的“mysql”数据库(因此,无需传递该代码)。
现在,采取婴儿步骤学习,我想AdoConnection.Execute('SHOW DATABASES', cmdText);
似乎工作正常,从某种意义上说它不会抛出异常,但我是一个我不知道的n00b我如何检查命令的结果: - /
HALP!
答案 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组件,则应使用TADODataSet
或TADOQuery
执行可返回任何结果的SQL命令(或更低级别的TADOCommand
s'{ {1}}方法)。
如果你想要一些非常简单的东西,没有所有的VCL balast,那么你想要尝试来自ExplainThat的Execute
类(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访问数组或变体。 或者填充数据集。