2010-05-31 4 views
2

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

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

Halp!

ответ

7

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

Большое спасибо. Это работало как шарм. – Mawg

+0

Хмм, сейчас у меня есть другой вопрос. Выход Tho получен из AdoQuery.FieldByname, но похоже, что мне нужно сопоставить имя поля с командой. Могу ли я это сделать? (Я хотел бы, чтобы общая функция выполняла команду и получала результат в TStringList) – Mawg

0

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

+0

, и вы не хотите приводить пример кода, несмотря на то, что я провозгласил себя n00b? Nvm, я уже разработал его – Mawg

+1

Прошу прощения, но на самом деле их уже много. Вам просто нужно использовать Google или документы. Быть нобом в порядке. Но быть ленивым noob является катастрофой ... –

1

Вы должны использовать TADOQuery, подключенный к TADODataBase. В свойстве 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; 

С уважением

1

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

0

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

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

Смежные вопросы