AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL um Tabellen und Feldnamen rauszufinden?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL um Tabellen und Feldnamen rauszufinden?

Ein Thema von Yc4s1vtz · begonnen am 10. Mär 2010 · letzter Beitrag vom 18. Mär 2010
Antwort Antwort
Seite 2 von 3     12 3      
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#11

Re: SQL um Tabellen und Feldnamen rauszufinden?

  Alt 11. Mär 2010, 09:11
Für die genannten DB-Systeme gibt es ein paar passende SELECT-Befehle unter [Wikibooks] Einführung in SQL: Tipps und Tricks. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Yc4s1vtz

Registriert seit: 10. Mär 2010
30 Beiträge
 
Delphi 3 Professional
 
#12

Re: SQL um Tabellen und Feldnamen rauszufinden?

  Alt 11. Mär 2010, 18:29
ich hab das mal mit der TSession probiert

da ich mit ODBC arbeite ist das ein riesen problem
weil ich immer nur die namen der ODBC verbindungen bekomme

total doof

hmm klar das ich mich dahin verbinden muss
mach ich ja auch

aber dennoch läft getdatabasename leider nicht

ich würde ja gerne mit zeos arbeiten
aber ich glaube zeos arbeitet nicht mit odbc
und das ist pflicht

komisches projekt
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: SQL um Tabellen und Feldnamen rauszufinden?

  Alt 11. Mär 2010, 22:40
Hallo,

Zitat:
TSession liefert die Datenbanken.
Nee !!!

Tschulligung

Wie ich schon geschrieben habe,
gibt es keine (Standard-)-Möglichkeit,
alle Datenbanken einer DB zu ermitteln.

Bsp.: Firebird:
Die Datei kann sich überall auf dem Server befinden.


Heiko
Heiko
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#14

Re: SQL um Tabellen und Feldnamen rauszufinden?

  Alt 12. Mär 2010, 09:01
Hallo Hoika,
Zitat von hoika:
Hallo,

Zitat:
TSession liefert die Datenbanken.
Unsinn !!!

Tschulligung

Wie ich schon geschrieben habe,
gibt es keine (Standard-)-Möglichkeit,
alle Datenbanken einer DB zu ermitteln.

Bsp.: Firebird:
Die Datei kann sich überall auf dem Server befinden.


Heiko
hast Du schon mal in die Hilfe geschaut?
Zitat von delphihilfe:
Die Methoden der Klasse TSession werden hier gezeigt.

Public Methoden
Name Beschreibung
AddAlias Fügt einen bestimmten Alias der Borland Database Engine (BDE) in die Sitzung eines SQL-Datenbankservers ein.
AddDriver Fügt einen bestimmten Alias der Borland Database Engine (BDE) in die Sitzung eines SQL-Datenbankservers ein.
AddPassword Fügt ein Kennwort in die aktuelle Sitzung ein, um auf verschlüsselte Paradox- oder dBASE-Tabellen zuzugreifen.
AddStandardAlias Fügt einen Standardalias der Borland Database Engine (BDE) für Paradox-, dBASE oder ASCII-Tabellen in die Sitzung ein.
Close Trennt die Sitzung von allen Datenbanken und schließt die Sitzung.
CloseDatabase Schließt eine der aktuellen Sitzung zugeordnete Datenbankverbindung.
DeleteAlias Entfernt einen bestimmten Alias der Borland Database Engin (BDE) aus der Sitzung.
DeleteDriver Entfernt einen bestimmten Alias der Borland Database Engine (BDE)-Treiber aus der Sitzung.
DropConnections Gibt alle inaktiven temporären Datenbankkomponenten frei, die einer Sitzung zugeordnet wurden.
FindDatabase Durchsucht in einer Sitzung die Liste der Komponenten nach einer angegebenen Datenbank.
GetAliasDriverName Stellt den Namen des Datenbanktreibers bereit, der von dem angegebenen und der Sitzung zugeordneten Alias der Borland Database Engine (BDE) verwendet wird.
GetAliasNames Fügt die Namen der dauerhaften Aliase der Borland Database Engine (BDE) in eine Stringliste ein.
GetAliasParams Ermittelt die Parameter, die einem Alias der Borland Database Engine (BDE) zugeordnet sind.
GetConfigParams Ruft Informationen über die Konfiguration der Borland Database Engine (BDE) ab.
GetDatabaseNames Fügt die Namen der dauerhaften Aliase der Borland Database Engine (BDE) und die Namen der in der Sitzung bekannten Datenbankkomponenten in eine Stringliste ein.
GetDriverNames Fügt die Namen der in der Sitzung verfügbaren Treiber der Borland Database Engine (BDE) in eine Stringliste ein.
GetDriverParams Fügt die Parameter eines bestimmten Treibers der Borland Database Engine (BDE) in eine Stringliste ein.
GetFieldNames Fügt die Feldnamen einer bestimmten Tabelle in eine Stringliste ein.
GetPassword Löst in der Sitzung die Ereignisbehandlungsroutine für OnPassword aus oder zeigt das Standarddialogfeld für die Kennworteingabe an.
GetStoredProcNames Fügt die Namen aller gespeicherten Prozeduren in eine Stringliste ein, die einer angegebenen, mit einem SQL-Datenbankserver verbundenen Datenbankkomponente zugeordnet sind.
GetTableNames Fügt die Namen der einer bestimmten Datenbankkomponente zugeordneten Tabellen in eine Stringliste ein.
IsAlias Legt fest, ob es sich bei einem String um einen bestehenden und in der Sitzung bekannten Datenbankalias der Borland Database Engine (BDE) handelt.
ModifyAlias Fügt Parameter in einen Alias der Borland Database Engine (BDE) ein oder ändert dessen Parameter.
ModifyDriver Fügt Parameter in einen Alias der Borland Database Engine (BDE) ein oder ändert dessen Parameter.
Open Startet eine Sitzung. Die Sitzung wird zur aktuellen Sitzung.
OpenDatabase Öffnet eine bestehende Datenbank oder erstellt und öffnet eine temporäre Datenbankkomponente.
RemoveAllPasswords Löscht alle Kennwörter für verschlüsselte Paradox-Tabellen, die in die aktuelle Sitzung eingefügt wurden.
RemovePassword Löscht einzelne Kennwörter für verschlüsselte Paradox-Tabellen, die in die aktuelle Sitzung eingefügt wurden.
SaveConfigFile Überträgt die aktuellen Informationen im BDE-Speicher aus dem Arbeitsspeicher in die BDE-Konfigurationsdatei auf der Festplatte.




Die Eigenschaften der Klasse TSession werden hier gezeigt.

Public Eigenschaften
Name Beschreibung
ConfigMode Legt fest, wie die Aliase der Sitzung von der Borland Database Engine (BDE) verwendet werden sollen.
DatabaseCount Gibt die Anzahl der aktiven Datenbankkomponenten an, die der Sitzung aktuell zugeordnet sind.
Databases Enthält ein indiziertes Array mit den Namen aller aktiven Datenbanken einer Sitzung.
Handle Legt das BDE-Handle für die Sitzung fest.
Locale Legt den Sprachtreiber der Borland Database Engine (BDE) für die Sitzung fest.
TraceFlags Legt die Datenbankoperationen fest, die zur Laufzeit mit dem SQL-Monitor überwacht werden.
Dazu noch folgenden Quelltext:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Database1: TDatabase;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
         i : Integer;
         k : Integer;
         sl1 : TstringList;
         sl2 : TstringList;
begin
  sl1 := TStringList.Create;
  sl2 := TStringList.Create;
  Session.GetAliasNames(memo1.lines);
  for i := 0 to memo1.lines.Count - 1 do Begin
    Database1.Close;
    Database1.AliasName := memo1.Lines[i];
    Database1.DatabaseName := memo1.Lines[i];
    Try
      Database1.Open;
      Database1.GetTableNames(sl1);
      memo2.Lines.Add('--- Datenbank ' + memo1.Lines[i]);
      for k := 0 to sl1.Count - 1 do begin
        memo2.Lines.Add('--- Feldauflistung zur Tabelle ' + sl1[k]);
        Database1.GetFieldNames(sl1[k],sl2);
        memo2.Lines.Add(sl2.Text);
      end;
    Except
      on e : Exception do begin
        memo2.Lines.add('--- ' + e.Message);
      end;
    End;
  End;
  sl2.Free;
  sl1.Free;
end;

end.
und Du hast das vom Threadersteller gewünschte Ergebnis über die BDE für alle Datenbanken die Tabellennamen und Feldname aufzulisten. Beim Einsatz der BDE kann man selbstverständlich nur die der BDE bekannten Datenbanken, Tabellen und Feldnamen auflisten. Die Aufgabenstellung lautet ja nicht: Liste mir alle für den Rechner theoretisch oder praktisch verfügbaren Datenbanken auf, von denen ich nicht mal weiß, ob es sie überhaupt gibt und von denen ich nicht mal weiß, wie ich auf sie zugreifen könnte.
Die BDE kann auf alle für sie konfigurierten Datenbanken zugreifen, hierzu zählen auch die auf dem Rechner eingerichteten ODBC-Treiber. Mehr ist nicht gefordert.

Spar die bitte in Zukunft solche Kommentare a la Unsinn.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: SQL um Tabellen und Feldnamen rauszufinden?

  Alt 12. Mär 2010, 09:13
Muss es denn BDE sein? Über BDE hast du eh das Problem das bei vielen neueren Datentypen von Oracle, MS SQL Server etc. über die BDE nur Müll ankommt. AFAIK bekommst du teilweise für NVARCHAR-Spalten den Inhalt nicht geliefert.

Also wenn ODBC gesetzt ist, ist ADO immer noch die bessere Wahl als BDE.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: SQL um Tabellen und Feldnamen rauszufinden?

  Alt 12. Mär 2010, 09:13
Hallo,

Tschuldigung ..

Aber

Zitat:
es muss unter mssql, oracle, db2, postgresql und mysql laufen
Es steht hier nicht
"Wie lese ich die Alias-Namen aus"

Ich muss keinen Alias-Namen in der BDE-Konfiguration haben,
um z.B. per TDataBase auf eine MS-SQL-DB zuzugreifen.
Es ist nur der Name des Servers und der DB selber notwendig (plus der Kleinkram ala User/Passwort).


Heiko
Heiko
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#17

Re: SQL um Tabellen und Feldnamen rauszufinden?

  Alt 12. Mär 2010, 09:28
Hallo,
Zitat von hoika:
Zitat:
es muss unter mssql, oracle, db2, postgresql und mysql laufen
und genau das funktioniert auf dem von mir beschriebenen Weg.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#18

Re: SQL um Tabellen und Feldnamen rauszufinden?

  Alt 12. Mär 2010, 10:33
So bekommst Du die Namen der ODBC-Verbindungen:
Delphi-Quellcode:
function GETDBS(var ll:tstringlist):boolean;
var
  reg : tregistry;
begin
  result:=true;
  reg:=tregistry.create;
  reg.rootkey:=HKEY_LOCAL_MACHINE;
  if reg.openkeyreadonly('\SOFTWARE\ODBC\ODBC.INI\ODBC DATA sources') then begin
    reg.getvaluenames(ll);
  end
  else result:=false;
  reg.closekey;
  reg.free;
end;
Und im Anhang Tabellen und Felder aus einer Oracle-DB.
Ich nutze zwar mODBC aber da kannst Du ohne große Probleme auf ADO umsteigen.

Gruß
K-H
Angehängte Dateien
Dateityp: pas tabellenufelder_195.pas (8,6 KB, 9x aufgerufen)
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#19

Re: SQL um Tabellen und Feldnamen rauszufinden?

  Alt 12. Mär 2010, 11:02
Hallo,

wi der Zugriff über das Information_Schema funktioniert, kann man unter http://en.wikipedia.org/wiki/Information_schema nachlesen.
  Mit Zitat antworten Zitat
Yc4s1vtz

Registriert seit: 10. Mär 2010
30 Beiträge
 
Delphi 3 Professional
 
#20

Re: SQL um Tabellen und Feldnamen rauszufinden?

  Alt 16. Mär 2010, 20:19
hmm

entzwischen nutze ich auch mODBC

also ich glaube ich drücke mich falsch aus
also Tabellen und Felder gehen nun ohne probleme

aber z.b. haben wir das problem das wir eine große DB2 einsetzen
wir stellen Zement her

haben deutschlandweit halt gruben wo wir den krams halt fördern.

nun kaufen wir oft firmen und verkaufen sie auch wieder
ist halt sehr beliebt bei uns

dummerweise hat jede ihre eigene datenbank

und die kommen dann auf die große DB2
aber unter einen neuen schema

da haben wir z.b.
LBnord,
sus_Sued,
ftsued,
heidelberg
und so weiter

wie bekomme ich nun mit modbc bitteschön die schemas raus?

und noch eine frage

wenn ich in SQL angebe
 Create Database lbNord was erstellt er da
ein schema ? eine datenbank ?
aus meiner sicht eine Datenbank
aber was ist nun ein schema?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 03:24 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