![]() |
Datenbank: MySQL • Version: 5.1 • Zugriff über: mysql.pas - http://www.fichtner.net/delphi/
alle Tabellen einer Datenbank anzeigen
Hallo Community,
ich habe jetzt etwas rumgerätzelt, aber ich bekomme es doch nicht auf die Reihe, die Namen aller Tabellen anzuzeigen. Für PHP fand ich das: ![]() ...was ich versuchte auf Delphi zu übertragen, allerdings fehlt mir die Funktion 'mysql_tablename()' Zudem bekommt man nicht einmal die Anzahl der Tabellen raus (nach PHP-Art). Die Datenbankverbindung ist _myCon und wurde auch schon erfolgreich getestet (Tabelle anlegen, Überprüfung mit PMA).
Delphi-Quellcode:
Ich hoffe meine Frage ist nicht zu dumm. Ich habe wirklich 1h daran gehangen + 30min Sufu & Google benutzt.
VAR count : integer;
num_res : PMYSQL_RES; begin if connect then begin num_res:= mysql_list_tables(_myCon,db); count:= mysql_num_rows(num_res); //jetzt ist count trotzdem 0! wieso? Thx im Vorraus! |
Re: alle Tabellen einer Datenbank anzeigen
Probier's mal so:
SQL-Code:
SHOW TABLES;
|
Re: alle Tabellen einer Datenbank anzeigen
Meinst du das so?
Delphi-Quellcode:
Wie komme ich dann jetzt an die Namen ran?
query := PChar('SHOW TABLES');
mysql_real_query(_myCon, query, Length(query)); |
Re: alle Tabellen einer Datenbank anzeigen
![]() Dann brauchst du nurnoch alle Erebnisse durchgehen, dabei mitzählen und die Daten aus der ersten Spalte holen (Bei diesem Query gibt's nur eine Spalte). MfG, Valle |
Re: alle Tabellen einer Datenbank anzeigen
Nach diesem Tut bin ich auch vorgegangen (mit der Verbindung usw.).
![]() Trotzdem nochmal zur Absicherung: query := PChar('SHOW TABLES'); mysql_real_query(_myCon, query, Length(query)); _myRes := mysql_store_result(_myCon); _myRow := mysql_fetch_row(_myRes); for i:= 0 to length(_myRow) do begin memo.lines.add(_myRow[i]); end; Wäre das so ok? |
Re: alle Tabellen einer Datenbank anzeigen
Naja fast, so müsste es eigentlich gehen:
Delphi-Quellcode:
Ungetestet.query := PChar('SHOW TABLES'); mysql_real_query(_myCon, query, Length(query)); _myRes := mysql_store_result(_myCon); _myRow := mysql_fetch_row(_myRes); for i:= 0 to length(_myRow) do begin memo.lines.add(_myRow[0]); end; |
Re: alle Tabellen einer Datenbank anzeigen
Ok, vielen Dank!
Ich probiere es morgen gleich aus. Gn8. |
Re: alle Tabellen einer Datenbank anzeigen
Leider funktioniert es noch nicht ganz!
Delphi-Quellcode:
query := PChar('SHOW TABLES');
mysql_real_query(_myCon, query, Length(query)); _myRes := mysql_store_result(_myCon); _myRow := mysql_fetch_row(_myRes); for i:= 0 to length(_myRow) do begin memo.lines.add(_myRow[0]); end; bei length(_myRow) sagt er "Incompatible types". Also habe ich aus Spaß die Anzahl der Tabellen eingetragen (aus PMA). Dann sah das ganze so aus:
Delphi-Quellcode:
Jetzt ist das Problem, dass er mir 5x die 1. Tabelle ausgibt!
for i:= 0 to 4 do begin
Also schaute ich mir das Array _myRow an. _myRow[0] enthält den 1. Tabellennamen _myRow[1] enthält Buchstabensalat _myRow[2] gibt es nicht Also wie kann ich jetzt die Anzahl der Tabellen feststellen und auch auch die anderen Tabellennamen erfahren? Thx 4 help! |
Re: alle Tabellen einer Datenbank anzeigen
Hallo,
ich würde es mal so probieren:
Delphi-Quellcode:
Grüße vom marabu
procedure GetTables(conn: PMYSQL; s: TStrings);
var res: PMYSQL_RES; row: PMYSQL_ROW; i: Integer; lengths: PMYSQL_LENGTHS; value: String; begin res := mysql_list_tables(conn, nil); repeat row := mysql_fetch_row(res); if Assigned(row) then begin lengths := mysql_fetch_lengths(res); SetString(value, row[0], lengths[0]); s.Add(value); end; until not Assigned(row); mysql_free_result(res); end; |
Re: alle Tabellen einer Datenbank anzeigen
Wow, es geht!!
Vielen Dank euch beiden für die gute Hilfe! mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz