![]() |
Re: SQL um Tabellen und Feldnamen rauszufinden?
Für die genannten DB-Systeme gibt es ein paar passende SELECT-Befehle unter
![]() |
Re: SQL um Tabellen und Feldnamen rauszufinden?
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 :( |
Re: SQL um Tabellen und Feldnamen rauszufinden?
Hallo,
Zitat:
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 |
Re: SQL um Tabellen und Feldnamen rauszufinden?
Hallo Hoika,
Zitat:
Zitat:
Delphi-Quellcode:
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.
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. 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. |
Re: SQL um Tabellen und Feldnamen rauszufinden?
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. |
Re: SQL um Tabellen und Feldnamen rauszufinden?
Hallo,
Tschuldigung .. Aber Zitat:
"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 |
Re: SQL um Tabellen und Feldnamen rauszufinden?
Hallo,
Zitat:
|
Re: SQL um Tabellen und Feldnamen rauszufinden?
Liste der Anhänge anzeigen (Anzahl: 1)
So bekommst Du die Namen der ODBC-Verbindungen:
Delphi-Quellcode:
Und im Anhang Tabellen und Felder aus einer Oracle-DB.
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; Ich nutze zwar mODBC aber da kannst Du ohne große Probleme auf ADO umsteigen. Gruß K-H |
Re: SQL um Tabellen und Feldnamen rauszufinden?
Hallo,
wi der Zugriff über das Information_Schema funktioniert, kann man unter ![]() |
Re: SQL um Tabellen und Feldnamen rauszufinden?
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
SQL-Code:
was erstellt er da
Create Database lbNord
ein schema ? eine datenbank ? aus meiner sicht eine Datenbank aber was ist nun ein schema? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 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