AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Auslesen von Feldname, Feldtypen, deren Größe und default werte einer Tabelle
Thema durchsuchen
Ansicht
Themen-Optionen

Auslesen von Feldname, Feldtypen, deren Größe und default werte einer Tabelle

Ein Thema von erich.wanker · begonnen am 20. Nov 2020 · letzter Beitrag vom 21. Nov 2020
Antwort Antwort
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
461 Beiträge
 
Delphi XE4 Professional
 
#1

Auslesen von Feldname, Feldtypen, deren Größe und default werte einer Tabelle

  Alt 20. Nov 2020, 16:30
Datenbank: mySQL • Version: 5.7.29 - MySQL Community Server (GPL) • Zugriff über: Zeos 7.2.6-stable
Hallo,

in Delphi xe4, mit libmysql.dll für die ZConnection zeige ich mir alle Tabellen einer Datenbank in einem DBGrid mit folgendem SQL Statement an


Delphi-Quellcode:
Z_TABELLEN.SQL.Clear;
Z_TABELLEN.SQL.append('show tables');
Z_TABELLEN.Open;
Die Felder lasse ich mir in einem 2. DBGrid anzeigen

Delphi-Quellcode:
tabellenname := Z_TABELLEN.FieldByName('tables_in_'+MainModule.UniMainModule.ZConnection1.Database).AsString;

Z_FELDER.SQL.Clear;
Z_FELDER.SQL.append('SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = "'+MainModule.UniMainModule.ZConnection1.Database+'" AND TABLE_NAME = "' + tabellenname + '"');
Z_FELDER.Open;

Somit bekomme ich Feldnamen und feldtyp (varchar, int date..) in meiner 2. DBGrid

ist es möglich - auch die Größe (varchar = 200) oder (int = 6) und die default-werte darzustellen?

Vielen Dank für Infos
Erich
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Auslesen von Feldname, Feldtypen, deren Größe und default werte einer Tabelle

  Alt 20. Nov 2020, 16:34
Das müsste doch alles gewünschte Liefern:
https://dev.mysql.com/doc/refman/8.0...w-columns.html
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#3

AW: Auslesen von Feldname, Feldtypen, deren Größe und default werte einer Tabelle

  Alt 20. Nov 2020, 16:36
In dem man sich die Definiton von INFORMATION_SCHEMA.COLUMNS anschaut, die entsprechenden Spalten mit selektiert und ins 2. DBGrid mit ausgibt?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Auslesen von Feldname, Feldtypen, deren Größe und default werte einer Tabelle

  Alt 21. Nov 2020, 12:37
Joar, Views ala INFORMATION_SCHEMA.COLUMNS gibt es in vielen SQL-DBMS.

Und schau mal, ob die Zeos-Komonenten das nicht auch direkt liefern.
Die TField's haben den Delphi-Typen (DataType) für die Felder drin
und z.B. bei Devart gibt es in den Query-Komponenten passende Informationen zum aktuell geladenen ResultSet.
> Quell-Tabelle, Quell-Field (nach einem AS) sowie die datenbankseitigenen Typen (eventuell hat Zeos sowas auch drin)
$2B or not $2B
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#5

AW: Auslesen von Feldname, Feldtypen, deren Größe und default werte einer Tabelle

  Alt 21. Nov 2020, 13:01
Das information schema ist ein ANSI-Standard, der aber nicht von allen Datenbanken unterstützt wird. MySQL unterstützt ihn.

Bei einem
Delphi-Quellcode:
tabellenname := Z_TABELLEN.FieldByName('tables_in_'+MainModule.UniMainModule.ZConnection1.Database).AsString;

Z_FELDER.SQL.Clear;
Z_FELDER.SQL.append('SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = "'+MainModule.UniMainModule.ZConnection1.Database+'" AND TABLE_NAME = "' + tabellenname + '"');
Z_FELDER.Open;
wäre es eigentlich naheliegend, es mal mit einem
Delphi-Quellcode:
tabellenname := Z_TABELLEN.FieldByName('tables_in_'+MainModule.UniMainModule.ZConnection1.Database).AsString;

Z_FELDER.SQL.Clear;
Z_FELDER.SQL.append('SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = "'+MainModule.UniMainModule.ZConnection1.Database+'" AND TABLE_NAME = "' + tabellenname + '"');
Z_FELDER.Open;
zu versuchen und nach Begutachtung des Ergebnisses den * durch die tätsächlich benötigten Spalten zu ersetzen.

Und da TZQuery und TZTable von TDataSet abgeleitet sind, hat man hier natürlich auch mindestens auf alle Spalteninformationen, die TDataSet bietet, Zugriff.
  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 12:52 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