Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Liste der sql Tabellen (https://www.delphipraxis.net/145-liste-der-sql-tabellen.html)

Jonson 13. Jun 2002 22:10


Liste der sql Tabellen
 
:)

Wie kann man eine Liste der sql Tabellen abrufen?

mfg

Jonson

Alfons_G 13. Jun 2002 22:49

Darauf kann man leider keine allgemeingültige Antwort geben. Jede Datenbank besitzt eine gewisse Anzahl Systemtabellen, in welchen solche Informationen gespeichert sind.

Bei Access z.B. siehst Du diese Tabellen, wenn Du die Option "Systemtabellen anzeigen" einstellst.

Bei Oracle kann man ganz einfach alle Tabellen des Benutzerkontos, unter dem man eingeloggt ist abfragen:
Code:
select * from user_catalog
Dies geht aber nur für das aktuelle Benutzerkonto, oder als Administrator.
Für Interbase und MySQL muss ich Deine Frage weitergeben.

:coder:

danielA 13. Jun 2002 23:26

Hallo Jonson,

also bei Interbase bin ich mir nicht ganz sicher.
Die Systemdaten stehen alle in Tabellen die mit RDB$ beginnen. Folgende Query hat mir alle Tabellen in meiner Datenbank angezeigt. Ich hoffe das kann noch jemand anderes bestätigen.

Code:
select RDB$RELATION_NAME from RDB$RELATIONS where RDB$RELATION_NAME not like 'RDB$%';
Bei MySQL reicht ein einfaches

Code:
show tables;
Gruß danielA

Jonson 14. Jun 2002 12:37

Moin

erst Danke.

Ich wollte die Tabellen in Delphi (listbox) sehen.

geht das?

mfg

Jonson

MrSpock 14. Jun 2002 12:49

Hallo Jonson,

ja das geht. Wenn du die SQL Abfrage von oben erstellt und ausgeführt hast, steht das Ergebnis ja als Datenmenge in einem TQuery (z.B. mit dem Namen qryTab) Objekt zur Verfügung.

Am einfachsten wäre jetzt die Anzeige in einem Grid, da ja nur eine DataSource Komponente mit dem Grid und der Query verbunden werden müsste. Zur Anzeige in der Listbox hilft folgender Code:

Code:
   LB.Clear;
   while not qryTab.EOF do
      LB.Items.Add(qryTab.FieldByName('RDB$RELATION_NAME').AsString);

Jonson 15. Jun 2002 00:07

Hallo MrSpock,

ich kann es so nicht benutzen. Wie sollte ich es für andere Datenbanken einsetzen?

Oder klappt das auch z.b. unter Oracle?

mfg

Jonson

MrSpock 15. Jun 2002 09:20

Hallo Jonson,

grundsätzlich hat jedes RDMS Systemtabellen, die die Namen der Tabellen enthalten. Wie diese bei Oracel heissen, kann ich leider nicht sagen. Wenn du aber die SQL Anweisung entsprechend anpasst, dann enthälst du die entsprechende Datenmenge und kannst sie wieder kopieren.

Gast 15. Jun 2002 17:56

Hallo Jonson, :D

in der Tat... es gibt doch ein einfacher Weg um unabhängig von dem Datenbank-System sich alle dort vorhandene Tabellen anzeigen zu lassen.

Ein weg per System-Tabellen wie dies Mr. Spock hier vorschlägt ist im Prinzip korrekt... so lange wie lange man NUR eine Datenbank abfragen möchte. Hat man mit mehreren Datenbanken zu tun... wird die Sache schon etwas schwieriger. Ich habe in der Vergangenheit viel mit System-Tabellen gearbeitet...nun dies hier hätte Dich nur verwirrt.

Bei jedem Datenbank System heißen die System-Tabellen, die diese Informationen enthalten anders... (und was ist mit Paradox?)..., darum hier ein einfacher Weg:


[code:1:9b82504cf2]
PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR

Jonson 16. Jun 2002 08:43

@Paul Jr.: Danke!

Jonson

JoelH 13. Aug 2003 08:38

hmm,
 
Zitat:

Zitat von Alfons_G
Bei Access z.B. siehst Du diese Tabellen, wenn Du die Option "Systemtabellen anzeigen" einstellst.

Gibt es dazu auch ein SQL Statement ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 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