Subject Re: [firebird-support] Embeded Version Usage
Author Helen Borrie
At 03:11 AM 8/11/2009, you wrote:
>I am totally new to Firebird -- sorry if my questions are basic.
>My objective is to be able to create an application using c# in VS2008 Express Edition which contains an embedded database thus making the app totally independent of Access, SqlServer, etc. In short, I want the local machine to run the app without installing any except the app and of course the .Net stuff -- .Net 3.5 for example.
>I have downloaded Firebird- & unzipped. Following the instructions on pg 18 regarding embedded server deployment, I copied fbembed.dll, firebird.msg, ib_util.dll and all the icu*.dlls into the root directory of my VS2008 project.
>I did google the error message & see where some have solved the problem, albeit for a different dll, by registering the dll. I have NOT tried this since there was no mention in the Firebird instructions.

The Firebird documentation refers to Firebird's own componentry, not to the various host language interface layers that developers have to choose from when writing client applications. Client apps talk to the Firebird server through the API, which is surfaced to applications through the Firebird client library. For Windows clients, this library is called fbclient.dll. It can connect to a Firebird server on any platform, including Windows.

Embedded (fbembed.dll) is a deployment option that is fbclient.dll with a single-user instance of the Firebird server built in. You have to add the pieces that constitute the application language interface for the client API. For C#, that layer is the Firebird dotNet provider. Besides implementing the translations of the API call structures for languages that depend on the dotNet environment, that layer also provides the linkages that hook up Firebird's dlls.

The place to go for help with this is the firebird-net-provider list. You can find the links for subscribing to that list by visiting

As a newbie with Firebird, it would not be unexpected to encounter some confusing limitations if you try to do your development with fbembed.dll as the client. As I already mentioned, embedded is a deployment option. For development, running a full server locally, with the normal client layers, is likely to be a lot more straightforward for development than diving straight into embedded. You can very closely simulate the embedded environment using the "Windows local" protocol, a.k.a. the IPC Server. Compiling an embedded version would come later, painlessly, when you are ready to deploy.

You are most welcome to visit this list again to ask about any problems you might encounter on the database side of your development.

^ heLen ^