Moin allerseits
Ich will mein IbDac zurück
Seit ein paar Tagen arbeite ich nun remote an einem Rechner im Ruhrgebiet, bis der Programmierer Mitte Januar aus'm Urlaub zurück ist. Im Verlauf des Projekts muß ich alle Tabellen zahlreicher Datenbanken verschiedenster
DBMS auslesen, analysieren und die so gewonnenen Daten sichern, was ich im Falle einer Firebird-
DB mit
TFDConnection.GetTableNames versucht habe:
Delphi-Quellcode:
Function TInfoFireBird.Tabellen: Boolean;
Var
Liste : TStrings;
begin
Liste := TStrings.Create;
Try
Try
FBCon.GetTableNames('','','',Liste,[osMy],[tkTable]);
Das liefert mir leider eine Fehlermeldung zurück, obwohl die Syntax korrekt zu sein scheint (kein Compilerfehler):
Im Projekt ****.exe ist eine Exception der Klasse EAbstractError mit der Meldung 'Abstrakter Fehler' aufgetreten.
Die drei leeren Strings sollen "normalerweise" beinhalten:
ACatalogName, ASchemaName beschränken Tabellennamen auf den Katalog und das Schema.
APattern ist das LIKE-Muster zum Filtern der Tabellennamen.
Wenn ich als APattern das Like-Zeichen % eintrage, kommt dieselbe Fehlermeldung:
FBCon.GetTableNames('','','%',Liste,[osMy],[tkTable]);
Katalog- und Schemanamen gibt es ja bei Firebird nicht, das sind glaub ich Begriffe aus
MySQL bzw.
MsSQL
Falls ich den Rechner dort zum Absturz bringe, muß ich den Nachbarn anrufen, der die Kiste dann neu startet
Das muß ich natürlich unter allen Umständen vermeiden, ist ja quasi eine Bewährungsprobe
Die Verbindungsfunktion sieht so aus:
Delphi-Quellcode:
Function TInfoFireBird.Verbinden: Boolean;
begin
Try
FBCon.Connected := False;
FBCon.Params.Clear;
FBCon.Params.Append('
DriverID=FB');
FBCon.Params.Append('
CharacterSet=UTF8');
FBCon.Params.Append('
Database=' + DateiName);
FBCon.Params.Append('
User_Name=' + DBI.DbUser);
FBCon.Params.Append('
Password=' + DBI.DbPass);
FBCon.Params.Append('
ExtendedMetadata=True');
FBCon.DriverName := '
FB';
FBCon.Connected := True;
Result := True;
Except
on e:
exception Do
Begin
Result := False;
Fehlertext := '
Fehler bei Verbindung mit "' + DateiName + '
": ' + e.
Message;
End;
End;
end;
In der
Hilfe ist ein Fehler: Die Syntax der Methode wird mit drei Strings als Parameter dargestellt, unten im Beispiel werden jedoch vier leere Strings als Parameter übergeben. Drei sind aber richtig, bei vieren kommt ein Compilerfehler.