Delphi / ADO: как получить результат Execute ()? - PullRequest
2 голосов
/ 31 мая 2010

Я объявил AdoConnection : TADOConnection; и успешно подключился к базе данных «mysql» по умолчанию (поэтому нет необходимости передавать этот код).

Теперь, делая маленькие шаги, чтобы научиться, я хотел бы AdoConnection.Execute('SHOW DATABASES', cmdText);, который, кажется, работает нормально, в том смысле, что это не исключение, но я такой n00b, что я не знаю, как я Можно проверить результат команды: - /

Halp!

Ответы [ 5 ]

7 голосов
/ 31 мая 2010

@ mawg, команда SHOW DATABASES возвращает набор данных с одним столбцом под названием «База данных», поэтому вы можете использовать компонент 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;
2 голосов
/ 31 мая 2010

Что вам нужно, чтобы добраться до возвращенного _Recordset.
Если вы не возражаете против использования компонентов Delphi, вы должны использовать TADODataSet или TADOQuery для выполнения команды SQL, которая может вернуть любые результаты (или более низкоуровневые TADOCommand s 'Execute методы). < бр /> Если вы хотите что-то действительно простое, без всякой VAL-балласта, вы не можете попробовать класс TADOWrap из ExplainThat (MIT лицензирован).

1 голос
/ 31 мая 2010

Вы должны использовать TADOQuery, подключенный к TADODataBase. В свойстве SQL вы должны включить утверждение SQl для извлечения баз данных в SGDB. В SQL Server вы можете сделать это:

SELECT * FROM sysdatabase

В MySQL должно существовать нечто подобное для извлечения имен.

Вы можете подключить этот TADOQuery к TDataSource и DBGrid, чтобы увидеть визуальный результат, или использовать код для изучения результата запроса (некоторые похожи на это):

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

Привет

0 голосов
/ 25 октября 2012

Если вы просто хотите заполнить сетку, почему вы не используете 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

Затем вы можете разрешить любому пользовательскому интерфейсу доступ к массиву или варианту. Или заполните набор данных.

0 голосов
/ 31 мая 2010

Вам нужен TAdoQuery для выполнения операторов, которые возвращают результаты.

...