![]() |
Datenbank: Firebird Embedded Server • Version: 1.5 • Zugriff über: Zeos Komponenten
Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugriff
Hallo.
Ich benutze: Zeos (Komponenten TZConnection, TZQuery) und Firebird Embedded Server Ich möchte Folgendes erreichen:
aufs Wesentliche vereinfacht soll das dann so aussehen:
Delphi-Quellcode:
Der Quelltext soll das Ziel zeigen. Im Test scheitert er an der Zeile {1} mit der Exception die sagt, das er das Token "EXEC" nicht kennt:
...
// in der Klassendefinition ZConnection1 :TZConnection; ZQuery1 :TZQuery; ... // mitteilen, dass eine neue Datenbank angelegt werden soll ZConnection1.Properties.Add('CreateNewDatabase=CREATE DATABASE ''MyDB.fdb'' '+ 'PAGE_SIZE 8192 USER ''SYSDBA'' PASSWORD ''masterkey'' '+ 'DEFAULT CHARACTER SET ISO8859_1'); ZConnection1.Connect; // Firebird anweisen, Datenbank und Datei zu schließen ZQuery1.SQL.Add('EXEC SQL'); ZQuery1.SQL.Add(' DISCONNECT ALL;'); ZQuery1.SQL.ExecSQL; ZQuery1.SQL.Clear; {1} ZConnection1.Disconnect; // <-- überhaupt nötig? ... // an dieser Stelle würde ich gern mit der Datei selbst arbeiten // (später räumliche und zeitliche Trennung hier) ... ZConnection1.Connect; // <-- überhaupt nötig? // Firebird anweisen, Datenbank und Datei zu öffnen ZQuery1.SQL.Add('EXEC SQL'); ZQuery1.SQL.Add(' CONNECT ''MyDB.fdb'' AS DB1;'); ZQuery1.SQL.ExecSQL; ZQuery1.SQL.Clear; ZConnection1.Disconnect; ... SQL Error: Dynamic SQL error code = -104 Token unknown - line 1, char 1 EXEC. Error Code: -104. Invalid token The SQL: EXEC SQL DISCONNECT ALL; Sinngemäß soll folgendes passieren:
Meine Probleme auf diesem Weg sind: (1) ZConnection verlangt immer die Angabe einer Datenbank? Ich möchte gern die SQL-Befehle benutzen um Datenbanken zu erstellen. ZConnection möchte aber immer vor Verbindungsaufbau eine Datenbank genannt bekommen. Selbst wenn ich den Umweg gehen muss, für jede Datenbank eine extra Connection aufzubauen: Wie kann ich mich mit Firebird verbinden um dann SQL-Befehle auzufühen? - Das bringt mich schon zu meinem nächsten Problem: (2) Ich kann nicht alle SQL-Befehle nutzen? Wie oben im Beispiel mit DISCONNECT gezeigt gilt dies auch für CONNECT, SET SQL DIALECT 3, ... Selbst wenn die Zeile EXEC SQL falsch sein sollte und ich sie auskommentiere, entsteht der gleiche Fehler mit gleichartigem Inhalt. Als Referenz für die SQL-Kommandos benutze ich den ![]() ![]() (3) Wie kann Firebird dazu gebracht werden eine Datei zu schließen? (So, dass man selbst Zugriff auf die Datei haben kann.) Nach einem ZConnection1.Disconnect; hat Firebird leider immernoch die Finger auf der Datenbankdatei. Ich möchte sie jedoch gern weiterbearbeiten und möchte das Firebird mitteilen. Wie geht das, wenn nicht durch Disconnect? Hm... Viele Fragen, wenig Antworten. Bitte um Hlfe. Panthrax |
Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
hallo,
viele antworten auf deine fragen findest du hier: ![]() raik |
Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
Nein, finde ich leider nicht.
TZConnection ist eine Komponente der ![]() SQL-Befehle werden nicht ansatzweise ausreichend behandelt, um mir weiterhelfen zu können. Und zum Umgang mit Firebird aus dem eigenen Programm heraus wird nicht eingegangen. Es wird erklärt, wie Firebird Embedded Server "installiert" wird und wie man mit Hilfe der Programme IBOConsole und Interbase DataPump v3.4 direkt an den Datenbanken arbeiten kann. Es wird auch gezeigt, wie man mit Hilfe dieser Programme zum Firebird Embedded Server migieren kann. Das hilft mir aber nicht weiter. Ich möchte Firebird aus dem Quelltext heraus verwenden. Panthrax |
Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
hallo ,
leider kenn ich mich mit zeos nicht aus, aber bei ibx ist es so, das du mit IBtransaction einen verbindung zur DB herstellt und diese wieder schliesst. ergo solltest du bei den zeos suchen, welche komponenete für die transaction zuständig ist. raik |
Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
Ich habe mich auf der Seite, die du oben nanntest, umgesehen. Es gibt dort etwas, das kommt meinem Problem schon näher:
![]() Dinge wie:
Delphi-Quellcode:
scheitern daran, dass das Token (hier: DISCONNECT) unbekannt ist.
ZQuery1.Add('DISCONNECT ALL;');
ZConnection1.StartTransaction; try ZQuery1.ExecSQL; except ZConnection1.Rollback; end; ZConnection1.Commit; Es bleibt die Frage: Warum kennt Firebird seine eigenen SQL-Befehle nicht? Oder woran scheitert es? Panthrax |
Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
bist du sicher, das das ein befehl von firebird ist?
|
Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
|
Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
na das nenn ich mal ne antwort, da ist alles dabei :thumb:
gleich mal in die linkliste aufnehmen, falls ich mal mit den zeos arbeiten sollte raik |
Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
@kiar: Ich habe oben angegeben, das ich als Befehlsreferenz für SQL die Dokumentation von
![]() @ol1uw: Danke für den Hinweis. Aber die Seite kannte ich schon. Ich bin ![]() ![]() Panthrax |
Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr
Moin,
reicht Dir ein
Delphi-Quellcode:
nicht aus ?
ZConnection1.Disconnect;
Irgendwie verstehe ich das Problem nicht. Tschüss, Lutz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 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