Thema: Delphi Tabellen Abfragen

Einzelnen Beitrag anzeigen

TheMason

Registriert seit: 18. Apr 2009
3 Beiträge
 
#1

Tabellen Abfragen

  Alt 18. Apr 2009, 14:18
Datenbank: MySQL • Version: 5.1 • Zugriff über: ODBC MySQL Driver
Hallo,

ich habe ein Problemchen. Ich möchte per Turbo Delphi und der Komponente TQuery auf meine MySQL Datenbank zugreifen und die vorhandenen Tabellen ermitteln.

Unter der MySQL Shell geht das mit "SHOW TABLES" auch wunderbar.
Nutze ich hingegen TQuery unter TurboDelphi, und will mir die einzelnen Felder holen, funktioniert das nicht.
Nicht funktionieren heißt das er auf keines der Felder in der Abfrage zugreifen kann.
Ich habe mal weitergeforscht und siehe da : Er hat laut TQuery.FieldDefs ein Feld welches auch genauso heißt wie das Feld in der MySQL-Shell. In dem Falle : "Tables_in_test" (Die Datenbank hab ich einfallsloshalber mal test genannt).
Record Count zeigt mir auch die Anzahl der Tabellen an, aber sobald ich mit TQuery.Fields [0].AsString drauf zugreifen möchte krachts in der Form das er meint das Array-Maxium wäre überschritten (also keine Einträge).
Mich wundert nur a) das er sagt er hat einen Spaltennamen der stimmig ist, b) Recordcount mir die richtige Anzahl an Records anzeigt, aber c) ich auf keinen der Records zugreifen kann.

Was kann das sein ?!

Dasselbe gilt im übrigen auch für "SHOW DATABASES" und "DESCRIBE TABLES".

Liegt das vllt irgendwie an ODBC (Einschränkung im Befehlssatz der an MySQL weitergegeben wird, oder vllt sogar am Treiber ?!)

hier mal mein code-fragment :

Delphi-Quellcode:
procedure TfrmMain.Button3Click(Sender: TObject);
var list : TStringList;
    tq : TQuery;
begin
  tq := TQuery.Create(self);
  tq.DatabaseName := 'MySQL';
  list := TStringList.Create;
  tq.Active := false;
  tq.SQL.Text:='SHOW TABLES';
  tq.active := true;
  info (inttostr (tq.RecordCount));
  while not tq.Eof do
  begin
    list.Add(tq.Fields[0].AsString);
    tq.Next;
  end;
  list.destroy;
  tq.Destroy;
end;
LG
TheMason

[edit=MrSpock]Delphi Code-Tags eingefügt. Mfg, MrSpock[/edit]
  Mit Zitat antworten Zitat