Firebird .NET provider and embedded server 3

6

I'm trying to use .NET Firebird Provider to connect to the embedded FB 3.0.1 server.

As far as I know, (also written here (page 6)), there is no more fbclient.dll\fbembed.dll but a single client fbclient.dll used for remote and embedded access.

But when I call the FBConnection.Open() I get a System.DllNotFoundException:

Unable to load DLL 'fbembed': 
Impossible to find the specified module (Exception from HRESULT: 0x8007007E).

Any ideas?

c#
firebird
firebird-3.0
firebird-embedded
firebird-.net-provider
asked on Stack Overflow Feb 1, 2017 by Barzo • edited Sep 17, 2019 by Mark Rotteveel

2 Answers

6

Looking in the Provider code the default Client Library is fbembed (maybe for compatibility):

internal const string DefaultValueClientLibrary = "fbembed";

Now, passing the new value to the ConnectionString do the trick:

  var connectionString = new FbConnectionStringBuilder
  {
    Database = dbPath,
    ServerType = FbServerType.Embedded,
    UserID = "SYSDBA",
    Password = "masterkey",
    ClientLibrary = "fbclient.dll"
  }.ToString();
answered on Stack Overflow Feb 1, 2017 by Barzo
3

This took a while to figure out. But I got it to work....

For embedded client:
Run the NuGet command: Install-Package FirebirdSql.Data.FirebirdClient

For embedded server:
Key point: The dll's are NOT added to Visual Studio as a project reference. Instead, their location is defined in the connection string.

Download the full server zip from here. Then extract these three files to your project. Use a structure similar to below.

  • my_project\firebird_server\fbclient.dll
  • my_project\firebird_server\ib_util.dll
  • my_project\firebird_server\plugins\engine12.dll //Yes, need to have this in a "plugins" subdirectory otherwise firebird server will throw error.

Then setup connection string:

Database=c:\sample_firebird_database.FDB;
User=my_username;
Password=my_password;
ServerType=1; // 1 = embedded server
Charset=UTF8;
ClientLibrary=c:\my_project\firebird_server\fbclient.dll; 
answered on Stack Overflow Mar 12, 2017 by rr789 • edited Jul 5, 2020 by rr789

User contributions licensed under CC BY-SA 3.0