AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi alle Tabellen einer Datenbank anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

alle Tabellen einer Datenbank anzeigen

Ein Thema von Megamorph · begonnen am 26. Jan 2007 · letzter Beitrag vom 27. Jan 2007
Antwort Antwort
Megamorph

Registriert seit: 28. Dez 2005
25 Beiträge
 
#1

alle Tabellen einer Datenbank anzeigen

  Alt 26. Jan 2007, 21:57
Datenbank: MySQL • Version: 5.1 • Zugriff über: mysql.pas - http://www.fichtner.net/delphi/
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:
http://www.selfphp.info/funktionsref...ist_tables.php
...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:
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?
Ich hoffe meine Frage ist nicht zu dumm. Ich habe wirklich 1h daran gehangen + 30min Sufu & Google benutzt.
Thx im Vorraus!
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

Re: alle Tabellen einer Datenbank anzeigen

  Alt 26. Jan 2007, 22:07
Probier's mal so:

SHOW TABLES;
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Megamorph

Registriert seit: 28. Dez 2005
25 Beiträge
 
#3

Re: alle Tabellen einer Datenbank anzeigen

  Alt 26. Jan 2007, 22:14
Meinst du das so?

Delphi-Quellcode:
query := PChar('SHOW TABLES');
mysql_real_query(_myCon, query, Length(query));
Wie komme ich dann jetzt an die Namen ran?
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

Re: alle Tabellen einer Datenbank anzeigen

  Alt 26. Jan 2007, 22:21
Hier steht wie du die Daten abrufst.
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
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Megamorph

Registriert seit: 28. Dez 2005
25 Beiträge
 
#5

Re: alle Tabellen einer Datenbank anzeigen

  Alt 26. Jan 2007, 22:27
Nach diesem Tut bin ich auch vorgegangen (mit der Verbindung usw.).
http://www.delphipraxis.net/internal...ect.php?t=7266

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?
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

Re: alle Tabellen einer Datenbank anzeigen

  Alt 26. Jan 2007, 22:38
Naja fast, so müsste es eigentlich gehen:

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;
Ungetestet.
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Megamorph

Registriert seit: 28. Dez 2005
25 Beiträge
 
#7

Re: alle Tabellen einer Datenbank anzeigen

  Alt 26. Jan 2007, 22:43
Ok, vielen Dank!
Ich probiere es morgen gleich aus.
Gn8.
  Mit Zitat antworten Zitat
Megamorph

Registriert seit: 28. Dez 2005
25 Beiträge
 
#8

Re: alle Tabellen einer Datenbank anzeigen

  Alt 27. Jan 2007, 11:15
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:
for i:= 0 to 4 do begin Jetzt ist das Problem, dass er mir 5x die 1. Tabelle ausgibt!

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!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: alle Tabellen einer Datenbank anzeigen

  Alt 27. Jan 2007, 12:10
Hallo,

ich würde es mal so probieren:

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Megamorph

Registriert seit: 28. Dez 2005
25 Beiträge
 
#10

Re: alle Tabellen einer Datenbank anzeigen

  Alt 27. Jan 2007, 12:40
Wow, es geht!!
Vielen Dank euch beiden für die gute Hilfe!

mfg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz