2010-05-31 5 views
2

나는 AdoConnection : TADOConnection;을 선언했으며 기본 "mysql"데이터베이스에 성공적으로 연결되어 있습니다. 따라서이 코드를 전달할 필요가 없습니다.Delphi/ADO : Execute()의 결과를 얻는 방법?

지금은 배울 수있는 단계를 밟고 있습니다. 나는 예외가 발생하지 않는다는 의미에서 작동하는 것처럼 보이는 AdoConnection.Execute('SHOW DATABASES', cmdText);을 원하지만, 나는 어떻게 할 수 있을지 모르는 그런 n00b입니다. 명령의 결과를 검토하십시오. -/

Halp!

답변

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

대단히 고마워요. 그것은 매력처럼 작용했습니다. – Mawg

+0

흠, 지금 또 다른 질문이 있습니다. Tho 출력은 AdoQuery.FieldByname에서 가져 왔지만 명령에 필드 이름을 일치시켜야하는 것처럼 보입니다. 나는 그것을 와일드 카드 할 수 있을까? (나는 명령을 실행하고 그 결과를 TStringList로 가져 오는 제네릭 함수를 원한다) – Mawg

0

결과를 반환하는 명령문을 실행하려면 TAdoQuery가 필요합니다.

+0

코드 예제를 제공하는 데 신경 쓰지 않습니다. 제 자신이 n00b라고 선언 했음에도 불구하고 말입니까? Nvm, 지금까지 해결했습니다 – Mawg

+1

죄송 합니다만 실제로는 이미 충분히 있습니다. 당신은 Google이나 워드 프로세서를 사용해야합니다. 멍청한 놈은 괜찮습니다. 그러나 게으른 멍청한 삶은 재앙입니다 ... –

1

TADODataBase에 연결된 TADOQuery를 사용해야합니다. 프로퍼티 SQL에서 SGDB의 데이터베이스를 검색하려면 SQl 스테이트먼트를 포함해야합니다. SQL 서버에서는이 작업을 수행 할 수 있습니다

SELECT *를 MySQL의에서 SYSDATABASES

에서 이름을 검색 할 수 비슷한 존재해야합니다.

당신은 시각적 인 결과를 참조하거나 (이 일부 유사) 쿼리의 결과를 탐구하는 코드를 사용하는 TDataSource와 DBGrid를이 TADOQuery를 연결할 수 있습니다

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

감사

1

당신 반환 된 _Recordset에 도달해야합니다.
델파이 구성 요소를 사용하는 데 신경 쓰지 않는다면, 결과를 반환 할 수있는 SQL 명령을 실행하려면 TADODataSet 또는 TADOQuery을 사용하거나 더 낮은 레벨 TADOCommand 'Execute 메쏘드를 사용해야합니다.
모든 VCL 밸러스트를 사용하지 않고 간단하게 무언가를 원하는 경우 TADOWrap 클래스를 ExplainThat (MIT 라이선스)에서 시도하고 싶습니다.

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가 배열이나 변형에 액세스하도록 할 수 있습니다. 또는 데이터 집합을 채 웁니다.

관련 문제