Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Delphi 2010 + Firebird Embedded (https://www.delphipraxis.net/146417-delphi-2010-firebird-embedded.html)

Spessi 19. Jan 2010 16:28

Datenbank: Firebird Embedded • Version: 2.1.3 • Zugriff über: DBExpress

Delphi 2010 + Firebird Embedded
 
Hallo Delphi-Praxis,
nachdem ich mir Delphi 2010 zugelegt habe wollte ich eigentlich sofort loslegen mit dem Verbinden auf eine Firebird-Datenbank. Nur eine einzige Sache irritiert mich momentan noch etwas. Habe mir den Firebird Embedded Server runtergeladen, die fbembed.dll umgenannt zu fbclient.dll und ins Exe-Verzeichnis kopiert. Allerdings fehlt mir laut ObjektInspektor nun noch eine DLL, die als "LibraryName" bezeichnet wird (Wert: "dbxfb.dll"). Wo genau finde ich diese?

Liebe Grüße

hoika 19. Jan 2010 16:46

Re: Delphi 2010 + Firebird Embedded
 
Hallo,

die gibt es in Delphi Enterprise / Architect.

Hast du die Proff ?



Heiko

Spessi 19. Jan 2010 16:56

Re: Delphi 2010 + Firebird Embedded
 
Vielen Dank für die Antwort - kaum sucht man richtig, schon hat man die Datei gefunden. :)
Für alle, die genauso blind sind wie ich, der Pfad lautet: C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin.


Grüße

Edit:
Gleich noch ne Frage hinterher:
Jetzt funktioniert alles soweit, aber nur dann, wenn ich SQLConnection1.connected:=true; in der OnCreate-Procedure auf enabled setze. Sobald ich das aber im OI auf Enabled setze kommt folgende Fehlermeldung (nach der Benutzername/Passwort Abfrage):

---------------------------
Fehler
---------------------------
Cannot load fbclient.DLL library (error code 126). The fbclient.DLL library may be missing from the system path or you may have an incompatible version of the library installed.
---------------------------
OK Details >>
---------------------------

Hat noch jemand ne Idee woran das liegen könnte?
Im Projektordner liegen nun folgende Dateien von Firebird:
- fbclient.dll (ursprünglich fbembedded, aber zu fbclient.dll umbenannt)
- firebird.conf
- firebird.msg
- icudt30.dll
- icuuc30.dll



Liebe Grüße

hoika 19. Jan 2010 17:45

Re: Delphi 2010 + Firebird Embedded
 
Hallo,

könnte viell. daran liegen,
das die DLL im Arbeitsverzeichnis gesucht wird.

Das ist bei der IDE ja ien anderes als bei der Exe.

Ich würde die Dateien mal in ein Verzeichnis packen,
was im PATH liegt.

Unter D7 hatte ich das Problem allerdings nicht.



Heiko

neo4a 19. Jan 2010 17:46

Re: Delphi 2010 + Firebird Embedded
 
Die embeded FB-Variante eignet sich nicht für die IDE. Selbst wenn Du es hinbekommst, die Dateien in den richtigen Ordner zu kopieren (Tipp: bin-Ordner der bds32.exe).

Ich empfehle Dir, den FB als Server zu installieren. In der IDE setzt Du dann die Connection-Parameter zum Server (localhost:c;\...), zur Laufzeit nimmst Du einfach den Dateinamen. Das funktioniert prima parallel und nebenbei kannst Du gleich die Netzwerkvariante Deiner App. erstellen ;)

--
Andreas

Die Muhkuh 19. Jan 2010 17:49

Re: Delphi 2010 + Firebird Embedded
 
Zitat:

Zitat von neo4a
Die embeded FB-Variante eignet sich nicht für die IDE.

Papperlapapp, geht wunderbar mit FB embeded. Entweder die DLLs in System32 packen oder in den Ordner, in dem die kompilierte Anwendung liegt.

Ich greife allerdings per AnyDAC drauf zu, geht wunderbar.

Spessi 19. Jan 2010 17:58

Re: Delphi 2010 + Firebird Embedded
 
Wie oben schon erwähnt, sind ja alle nötigen Firebird DLLs im gleichen Ordner in dem auch die Exe-Datei ist. Da wollte der OI aber nicht wie fbclient.dll finden. Hab sie natürlich auch schon im system32 Ordner gehabt, da fand er sie allerdings auch nicht. Letztendlich "funktionierte" die Methode von neo4a. Anführungszeichen, weil es auch nicht so funktioniert wie ich es mir vorstelle: Der OI sucht jetzt die Datenbank auch im /bin Ordner von Delphi. Sollte sich aber mit Verwenden von absoluten Pfaden beheben lassen. Darf man dann nur nicht vergessen wieder zurückzuändern, wenn man die Datei mal weitergeben sollte ;-)

neo4a 19. Jan 2010 18:02

Re: Delphi 2010 + Firebird Embedded
 
Bitte, Muhkuh, plapper weniger und übe Dich mehr darin, sinnentnehmend zu lesen: Dass sich etwas nicht eignet, heißt nicht, dass es nicht "geht".

Glaube mir, manchmal muss man Datenbankanwendungen auch debuggen und dazu parallel auf die DB zugreifen können.

BTW, Deine "Lösung" im System32-Verzeichnis ist sehr unsauber: "geht" vielleicht, ist aber ungeeignet ;)

--
Andreas

Spessi 19. Jan 2010 18:11

Re: Delphi 2010 + Firebird Embedded
 
Zitat:

Zitat von neo4a
Glaube mir, manchmal muss man Datenbankanwendungen auch debuggen und dazu parallel auf die DB zugreifen können.

Das ist wohl wahr, allerdings wird es sich bei mir nur um eine einfache Film-Verwaltung handeln, da wird es hoffentlich nicht so viel zum debuggen geben ;-) Klar, vorerst auf einem lokalen Server programmieren würde vermutlich auch besser sein, aber ich denke in diesem Fall ist das schon etwas overload ;-)
Zitat:

Zitat von neo4a
BTW, Deine "Lösung" im System32-Verzeichnis ist sehr unsauber: "geht" vielleicht, ist aber ungeeignet ;)

Diese Lösung ging ja sowieso nicht - ich dachte auch erst, dass es im System32-Ordner funktionieren müsste, da es ja auch im Suchpfad von Delphi liegt. Aber genausogut liegt auch der Projekt-Ordner in den Suchpfaden von Delphi, dort findet er die Datei ja auch nicht. Letztendlich funktioniert es so, dass, wie du sagtest, man die fbclient.dll + Abhängigkeiten im /bin Ordner speichern, und dann im OI den Pfad zur Datenbank absolut, nicht relativ, angeben muss. Darf dann selbstverständlich nach der Entwicklungsphase nicht mehr absolut drin stehen.

Grüße

hoika 19. Jan 2010 18:40

Re: Delphi 2010 + Firebird Embedded
 
Hallo,

Zitat:

Ich empfehle Dir, den FB als Server zu installieren. In der IDE setzt Du dann die Connection-Parameter zum Server (localhost:c;\...), zur Laufzeit nimmst Du einfach den Dateinamen. Das funktioniert prima parallel und nebenbei kannst Du gleich die Netzwerkvariante Deiner App. erstellen

Neeeeeeee ;)


Wenn ich beides Testen muss, mache ich es anders.

Server-Test
- FB wird als Anwendung gestartet (fbserver.exe -a)
- embedded DLL umbenennen

Embedded-Test
- FBServer beenden
- embedded DLL benutzen


Damit lassen sich auch schön mehrere FB-Versionen testen.


Heiko

neo4a 19. Jan 2010 19:52

Re: Delphi 2010 + Firebird Embedded
 
Zitat:

Zitat von hoika
Neeeeeeee ;)

Du also auch noch ;)

Bitte, wenn Du es kompliziert(er) möchtest, mach nur weiter so. Es ist nur so, dass der Server durchaus "durchrennen" kann und Du kannst trotzdem den Embedded benutzen. Die fbembed.dll/gds32.dll ist so smart und kann Dir sowohl als Server als auch Client-Dll dienen und Dich zu Deiner parallel laufenden Server-Instanz verbinden. Nix kopieren, nix umbenennen: einfach über den Connection-String bestimmen, wohin die (Daten-)Reise gehen soll.

Zitat:

Zitat von Spessi
Das ist wohl wahr, allerdings wird es sich bei mir nur um eine einfache Film-Verwaltung handeln, da wird es hoffentlich nicht so viel zum debuggen geben ;-) Klar, vorerst auf einem lokalen Server programmieren würde vermutlich auch besser sein, aber ich denke in diesem Fall ist das schon etwas overload ;-)

Vieles, das zuvor klein begann, wurde groß und erfolgreich. Der Server ist überhaupt nicht overloaded, sondern genauso simpel zu behandeln, wie die Embedded-Variante (wenn man einmal von der zwingend erforderlichen Benutzer-Verwaltung absieht). Mit dem Tool Deiner Wahl (ich benutze z.B. seit 12 Jahren IB_SQL) kannst Du dann aber Deine DB parallel monitoren, d.h. Du machst in Deiner App ein Insert und schaust mit dem Tool nach, ob das geklapt hat - gleichzeitig. Dabei lernst Du auch etwas über die Sichtbarkeit von Transaktionen und bist gaanz nahe an einer Multi-User-App ;)

Weil Du gerade die Filmverwaltung erwähnst: Für TClientDataset gibt es eine schöne Demo ganz ohne externe DB. Das Problem der XML-Datei pro Tabelle habe ich übrigens mit der SciZipFile-Komponente gelöst. Aber das ist eher ein Thema für sich.

Zitat:

Zitat von Spessi
Letztendlich funktioniert es so, dass, wie du sagtest, man die fbclient.dll + Abhängigkeiten im /bin Ordner speichern, und dann im OI den Pfad zur Datenbank absolut, nicht relativ, angeben muss. Darf dann selbstverständlich nach der Entwicklungsphase nicht mehr absolut drin stehen.

Ganz kleiner Rat: setze so etwas immer zur Laufzeit im Code, gern auch mittels Compilerschalter unterscheidbar. Auch Du wirst älter und so vergesslich wie ich ;)

--
Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 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 by Thomas Breitkreuz