DotNetFirebird.org DotNetFirebird
Using Firebird SQL in .NET.
Friday, January 07, 2005

Firebird Can Be Easily Embedded

Embedded Firebird has an incredibly small runtime. At minimum it requires two files:
  • fbembed.dll (Embedded Firebird) - 1.44 MB
  • FirebirdSql.Data.Firebird.dll (ADO.NET Provider) - 380 kB

Embedded Firebird features:

  • Supports multiple concurrent connections
  • Locks the database file (it can't be open by other application at the same time)
  • No TCP/IP port exposed

To start using the embedded Firebird you need to:

  • Download the latest Embedded Firebird Server for Windows from sourceforge.
  • Download the latest Firebird ADO.NET Provider from sourceforge.
  • Add a reference to FirebirdSql.Data.Firebird.dll to your VS.NET project.
  • Copy fbembed.dll to your application's directory.
  • Use a connection string with a ServerType property set to 1, e.g. "ServerType=1;" + "User=SYSDBA; " + " Password=masterkey;" + "Dialect=3;" + "Database=c:\\data\\employees.fdb". You still need to specify the User and Password although the security doesn't require that. The Database path can be relative.
  • The database file doesn't need to have the .fdb extension, you can rename it as you want.

Later posts and documentation entries:

Related

Comments:

Does the embedded version also support multiple concurrent users? Is there any limitations on this and with regards to performance etc.?
You can use concurrent connections. There should be no limitations as the embedded Firebird uses the same core as the server (only a different communication interface).
I have updated the post to make it clear.
Can a web app open multiple concurrent connections? You say the file is locked. Would that mean I would have to store the connection in the application object making it available to every session?
For a web application I would recommend using a standalone Firebird server (separate process).
However: The db file is locked by the opening process. Inside the opening process you can have multiple connections accessing the database.
Thanks Dan. Can the stand alone server be deployed by xcopy or does the installer have to be run? I do not have the ablity at my host to run installs is why I am asking.
It's OK to copy the Firebird files directly (without installer) but you need to install the Windows service then.
I am afraid that if you only have access to your web application directory you're not able to push Firebird on the server.
I am quite new to Firebird, but have set up the embedded server on my development machine without ever having run any kind of an installer. So, I suspect that you could do the same on your third party Web hosting service (but haven't tried that yet).

The main issue would seem to be server security, because once you put fbembed.dll on a server, any old user ID and password will be usable to access any old Firebird database on your server (including those that might be otherwise require secure passwords when accessed via an installed Firebird server), since by design the embedded server does not have a security database (so that no installation at all will be required).

So long as your server is physically secure, and no one can hack into it to open your DB, I GUESS you MIGHT be OK using the embedded Firebird on a third parting hosting service's Web server. If you encrypt your own data within the database then you'd be less likely to get ripped off. Certainly seems convenient and inexpensive as compared to SQL Server. Imagine being able to perform a backup just by copying your database file.
Hello there,

I'm pretty new to firebird database but i'm planning to use embedded firebird database on my webhosting server and retrieve the database record using XML webservice.

So if many client application use the same webservice. I think there should not be any problem at all ?

Please correct me if i'm wrong..

Thanks

Shirish
Hi. Is possible to use the embedded version in a pocket pc application?. Maybe something like de sqlserver CE, where i can create a database in the device and then perform sql queries against it.
Hi, I using DotNetFireBird with ASP.Net, on Win2k. When I run my web application, i get the exception-
System.DllNotFoundException: Unable to load DLL (fbembed)

My directory structure is as follows:
[WWW Root]
- TestFile.aspx
- Web.config
- [bin]
----- fbembed.dll
----- FirebirdSql.Data.Firebird.dll

Has anyone also encountered this prob before? Pls help. Thx!
Hi

What are the software requirements to run embedded Firebird on a Pocket PC? I copied the FBClient.dll and the .Net SQL API file to my Pocket PC but when I run my application it’s crashing. Any help?

Thanks
To Anonymous: It's not possible to run fbembed.dll on a PocketPC. Please see the FAQ for details.
To kenynb: You have to place fbmebed.dll in the application path. For ASP.NET application it's the best idea to put it into the system folder. See also How to use embedded Firebird in ASP.NET applications.
Just found out about firebird. I use sql express 2005 and i would like to test your dbms too. What files should i download? It is a windows application; interested in having embedded all these.
Tnank you.
how can I creat a project by SharpDevelope??uhehim
I'm fairly new to Firebird and the dotnet provider but managed to get things up and running very quickly and have started developing my first application. I regularly recreate my database from scratch and run a script to set up the tables, etc using the Isql.FbScript following the example provided on this site. This has suddenly stopped working when it attempts to parse the script, throwing the exception "Token is empty!". This happens on every script even the sample "employee.sql". What's going on - whats changed !!! The scripts, their locations and everything else remains unchanged.
Hello,

I am a Vb developer and would like to use FB embeded from VB directly. How can I use it?

Is there any OLD EB Provider for FB?

TIA

Yogi Yang
Hi,
I have 2 applications accessing the same embedded firebird database.
When the 1st application opens a connection and then closes it with the Close() method, the other application can't access the db until I close the 1st application.
Is that a bug, or is there another way to close the connection?

grtz.
Bart
Bart: You need to clear the connection pool - see Connection Pooling.
Sorry, I didn't read the FAQ properly.
I added Pooling=false to my connectiong string and it is working perfectly now!

grtz.
Bart
I hava a java application which works on Windows & Linux using jdbc and classic Firebird server on Windows2K

can I use embedded Firebird with jdbc?

I am unsure as to if a java app can use a dll (I know that Aladdin have a native methods DLL which works simply by being in the directory, is this the case for Firebird?)


Borland connection example:

durl = "jdbc:firebirdsql:J2/3050:t21"; // using alias
dUname = "sysdba";
dpass = "somepassword";
dDriver = "org.firebirdsql.jdbc.FBDriver";
database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor(durl, dUname, dpass, false, dDriver));
Blog comments are closed.



Previous

Archives