AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugriff
Thema durchsuchen
Ansicht
Themen-Optionen

Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugriff

Offene Frage von "Panthrax"
Ein Thema von Panthrax · begonnen am 19. Feb 2005 · letzter Beitrag vom 20. Feb 2005
Antwort Antwort
Seite 1 von 2  1 2      
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#1

Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugriff

  Alt 19. Feb 2005, 20:41
Datenbank: Firebird Embedded Server • Version: 1.5 • Zugriff über: Zeos Komponenten
Hallo.

Ich benutze: Zeos (Komponenten TZConnection, TZQuery) und Firebird Embedded Server

Ich möchte Folgendes erreichen:
  • eine lokale Datei als Datenbank benutzen
  • auf die (Datenbank-)Datei als Programm zugreifen

aufs Wesentliche vereinfacht soll das dann so aussehen:
Delphi-Quellcode:
...
    // 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;
...
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:

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:
  • eine Verbindung zu Firebird Embedded Server herstellen
  • Datenbanken erstellen (also Testweise ersteinmal eine)
  • die entstandenen (Datenbank-)Dateien weiterverarbeiten
  • über Firebird Embedded Server zu den Datenbanken verbinden

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 Embedded SQL Guide dessen Link auf dieser Firebird-Seite (unter "Interbase 6.0 manuals/Embedded SQL Guide) zu finden ist. Dort wird gezeigt, wie man Datenbanken öffnet (Seite 41) und sie wieder schließt (Seite 49). - Ich verstehe nicht warum ich u.a. diese Befehle nicht nutzen kann, obwohl ich mich mit Firebird unterhalte.

(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
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#2

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr

  Alt 19. Feb 2005, 20:56
hallo,

viele antworten auf deine fragen findest du hier:

http://www.seeger-net.com/Delphi/FBE...FBEmbedded.htm

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr

  Alt 19. Feb 2005, 21:34
Nein, finde ich leider nicht.

TZConnection ist eine Komponente der Zeos Komponenten. Und zu denen wird dort ankündigend gasagt: "Diesem Artikel wird eine Fortsetzung folgen. (...) Auch auf den Einsatz der ZEOS Library als Freeware-Alternative für den Datenbankzugriff, möchte ich in diesem zweiten Teil eingehen."

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
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#4

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr

  Alt 19. Feb 2005, 21:40
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
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#5

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr

  Alt 19. Feb 2005, 21:57
Ich habe mich auf der Seite, die du oben nanntest, umgesehen. Es gibt dort etwas, das kommt meinem Problem schon näher: Zeos Library (Einsatz mit Delphi und Firebird) Allerdings konnte es nicht weiterhelfen.

Dinge wie:
Delphi-Quellcode:
ZQuery1.Add('DISCONNECT ALL;');
ZConnection1.StartTransaction;
try
  ZQuery1.ExecSQL;
except
  ZConnection1.Rollback;
end;
ZConnection1.Commit;
scheitern daran, dass das Token (hier: DISCONNECT) unbekannt ist.

Es bleibt die Frage: Warum kennt Firebird seine eigenen SQL-Befehle nicht? Oder woran scheitert es?

Panthrax
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#6

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr

  Alt 19. Feb 2005, 22:00
bist du sicher, das das ein befehl von firebird ist?
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
ol1uw

Registriert seit: 24. Jul 2004
Ort: Freiberg
69 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr

  Alt 19. Feb 2005, 22:05
Vielleicht hilft der Link etwas weiter
How to create a database, tables and triguers
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#8

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr

  Alt 19. Feb 2005, 22:12
na das nenn ich mal ne antwort, da ist alles dabei

gleich mal in die linkliste aufnehmen, falls ich mal mit den zeos arbeiten sollte

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#9

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr

  Alt 19. Feb 2005, 22:49
@kiar: Ich habe oben angegeben, das ich als Befehlsreferenz für SQL die Dokumentation von firebird.sourceforge.net, also von Projektseite selbst zugunde lege. Ich gehe davon aus, das sie in den Dokumenten zeigen, was funktioniert.

@ol1uw: Danke für den Hinweis. Aber die Seite kannte ich schon. Ich bin www.ZeosLib.net und firebird.sourceforge.net schon 'rauf und 'runter gesurft. - Auf der Seite wird u.a. erklärt, wie man eine Datenbank anlget (wie der Titel ja bereits sagt) und sich mit ihr verbindet, aber leider nicht, wie man die Verbindung wieder vollständig löst; also auch die Datenbank-Datei vom Datenbank-Server löst.

Panthrax
  Mit Zitat antworten Zitat
Benutzerbild von lume96
lume96

Registriert seit: 14. Sep 2003
Ort: Rognac/Marseille - Frankreich
128 Beiträge
 
Delphi 7 Professional
 
#10

Re: Fragen: FB SQL-Befehle, TZConnection, Datenbankdateizugr

  Alt 19. Feb 2005, 23:01
Moin,

reicht Dir ein
ZConnection1.Disconnect; nicht aus ?

Irgendwie verstehe ich das Problem nicht.

Tschüss,
Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:23 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