Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism DLL (fbembed) kann nicht geladen werden (https://www.delphipraxis.net/61396-dll-fbembed-kann-nicht-geladen-werden.html)

webseal 20. Jan 2006 22:09

Datenbank: Firebird embedded • Version: 1.5 • Zugriff über: .net

DLL (fbembed) kann nicht geladen werden
 
Hallo,
ich möchte in einer Windows Forms Anwendung (Delphi 2006) eine Firebird embedded Datenbank verwenden. Auf einem Form habe ich eine FBConnection und einen FBDataAdapter plaziert. Wenn ich den DataAdapter Configurator starte, erhalte ich die Fehlermeldung "Die DLL (fbembed) kann nicht geladen werden". Die gleiche Fehlermeldung erhalte ich, wenn im Load-Ereignis des Forms die Zeile "FBConnection1.Open" ausgeführt wird.

connection string:
User=SYSDBA;Password=masterkey;Database=D:\Program mierung\Test\DBEXECSERV.fdb;DataSource=;Port=;Dial ect=3;Charset=NONE;Role=;Connection lifetime=15;Connection timeout=15;Pooling=True;Packet Size=8192;Server Type=1

Im Anwendungsverzeichnis D:\Programmierung\Test\ habe ich u.a. folgende Dateien liegen:
fbclient.dll
firebird.conf
firebird.msg
intl/fbintl.dll
udf/fbudf.dll

Kennt jemand das Problem oder hat einen Hinweis was ich falsch mache?

webseal

mkinzler 20. Jan 2006 22:14

Re: DLL (fbembed) kann nicht geladen werden
 
Kopiere mal die fbclient.dll als fbembed.dll in das Verzeichnis der Anwendung. Es scheint als ob er nach einer Dll mit diesem Namen sucht.

webseal 20. Jan 2006 22:55

Re: DLL (fbembed) kann nicht geladen werden
 
Danke das war schonmal ein Treffer. Auch wenn ich nicht ganz verstehe, warum ich in diesem Fall keine fbclient.dll brauche, sondern eine fbembed.dll, obwohl die Doku von Firebird embedded etwas anderes sagt.

Nun erhalte ich aber einen weiteren Fehler:

Dynamic SQLError
SQL Error Code =-204
Table unknown
KONTAKT
at line 3 column 1

Der Fehler tritt in der Zeile "FBAdapter1.Fill ..." auf

Delphi-Quellcode:
   try
     DataSet1:=DataSet.Create;
     FBConnection1.Open;
     FBDataAdapter1.Fill(DataSet1, 'KontakteTable');
     DataGrid1.DataMember:='KontakteTable';
     FBConnection1.Close;
   except
      on ex: Exception do
         Messagebox.Show(ex.Message);
   end;
Die Tabelle Kontakt ist in der Datenbank vorhanden, und lässt sich z.B. mit IBOConsole öffnen. Es scheint aber so als sei die Datenbank nicht geöffnet.

webseal

mkinzler 20. Jan 2006 23:05

Re: DLL (fbembed) kann nicht geladen werden
 
Zitat:

Zitat von webseal
Danke das war schonmal ein Treffer. Auch wenn ich nicht ganz verstehe, warum ich in diesem Fall keine fbclient.dll brauche, sondern eine fbembed.dll, obwohl die Doku von Firebird embedded etwas anderes sagt.

Anscheinend entscheidet die Klasse FBConnection, jeh nachdem die Datenbank über Netz- oder loakem Protokoll angesprochen wird, welche dll geladen wird. Andere DB-Komponenten laden immer die gleiche Dll.
Zitat:

Nun erhalte ich aber einen weiteren Fehler:

Dynamic SQLError
SQL Error Code =-204
Table unknown
KONTAKT
at line 3 column 1

Der Fehler tritt in der Zeile "FBAdapter1.Fill ..." auf

Delphi-Quellcode:
   try
     DataSet1:=DataSet.Create;
     FBConnection1.Open;
     FBDataAdapter1.Fill(DataSet1, 'KontakteTable');
     DataGrid1.DataMember:='KontakteTable';
     FBConnection1.Close;
   except
      on ex: Exception do
         Messagebox.Show(ex.Message);
   end;
Die Tabelle Kontakt ist in der Datenbank vorhanden, und lässt sich z.B. mit IBOConsole öffnen. Es scheint aber so als sei die Datenbank nicht geöffnet.

webseal
Ich kenne mich in WinForms (noch?) nicht aus. Deshalb weiß ich auch nicht wie das mit dem DataAdapter funktioniert.
Heißt die Tabelle kontakte oder 'Kontakte'. Im zweiten Fall (Dialect 3) kann er die Tabelle nicht laden, da Dialect 3 case-sensitiv ist.
Wie sieht der Query aus?

webseal 20. Jan 2006 23:23

Re: DLL (fbembed) kann nicht geladen werden
 
Das SQL Statement im Adapter lautet:

SELECT ID, Nachname, Vorname FROM Kontakt

Eine Änderung von Kontakt in kontakt oder KONTAKT hat keine Auswirkung.

mkinzler 21. Jan 2006 08:12

Re: DLL (fbembed) kann nicht geladen werden
 
Versuchs mal mit
SQL-Code:
SELECT ID, Nachname, Vorname FROM 'Kontakt'

webseal 21. Jan 2006 12:32

Re: DLL (fbembed) kann nicht geladen werden
 
Das war es. :hello: Du bist damit mein Helfer der Woche :mrgreen:

Spaltennamen als auch Tabellenname müssen in Delphi in DOPPELTE Anführungszeichen gesetzt werden und schon geht's.

Danke !!!

webseal

mkinzler 21. Jan 2006 17:55

Re: DLL (fbembed) kann nicht geladen werden
 
Zitat:

Zitat von webseal
DSpaltennamen als auch Tabellenname müssen in Delphi in DOPPELTE Anführungszeichen gesetzt werden und schon geht's.

das Problem liegt wie erwähnt an der Möglichkeit bei Dialect-3 Datenbanken case-sensitive Tabellen- u.Spaltennamen zu vergeben. In diesem Fall muß bei Abfragen diese gequotet werden, so das der SQL.-Parser des DB-FBservers von diesem Feature Gebrauch macht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 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