Serverless Firebird Example

29 views
Skip to first unread message

Tony Valenti

unread,
Mar 18, 2025, 2:14:18 PMMar 18
to firebird-net-provider
Hi All,
I have a .NET 9.0 application that needs to ingest data from a firebird FDB file.
I'd like to build my app so I can point at the FDB file and just be able to read everything without an actual Firebird server setup.  (Similar to how SQLITE works.)

If this is possible, can you point me to an example that shows how to do this?

Ideally, I'd like to not have to deal with different firebird versions as well so it would be great if the method could read from different DB versions.

Jiří Činčura

unread,
Mar 18, 2025, 2:27:37 PMMar 18
to 'Mr. John' via firebird-net-provider
You need to use Firebird in mode called "Embedded". Just put the files near your executable. From C# POV you need to set `ServerType` and possibly `ClientLibrary` (if the files are not near executable).

Sadly you'll have to deal with Firebird, or rather ODS, versions. There's no way around it.

--
Mgr. Jiří Činčura
https://www.tabsoverspaces.com/

Tony Valenti

unread,
Mar 18, 2025, 3:03:32 PMMar 18
to firebird-net-provider
From what I found, it looks like I'd need to download the Firebird 3/4/5 versions and put certain DLLs in specific directories and set the ClientLibrary as necessary.

Is this correct?

We'd like our app to stay easily maintainable and cross platform.

Would you be willing to make (for pay) the following nuget packages:
FirebirdSql.Data.ClientLibrary.Firebird3x
FirebirdSql.Data.ClientLibrary.Firebird4x
FirebirdSql.Data.ClientLibrary.Firebird5x

That have the necessary files for each version of Firebird and put them into a subfolder like:
\dataproviders\firebird\3x
\dataproviders\firebird\4x
\dataproviders\firebird\5x

The goal being that, in our code, we could simply add references to those Nuget packages and do something like:

if(FirebirdSql.Data.Version3.TryGetClientLibary(out var ClientLibrary)){
  //Use the DLL path of the client library that is returned.

Jiří Činčura

unread,
Mar 19, 2025, 4:52:54 AMMar 19
to 'Mr. John' via firebird-net-provider
> Is this correct?

Yes.

> if(FirebirdSql.Data.Version3.TryGetClientLibary(out var ClientLibrary)){
> //Use the DLL path of the client library that is returned.
> }

What would be the point of such API? If you already have `FirebirdSql.Data.Version3` namespace, you'd have the library as well.

Tony Valenti

unread,
Mar 19, 2025, 4:02:13 PMMar 19
to firebird-net-provider
Actually, I think the API would essentially be:
FirebirdSql.Data.Version3.GetClientLibrary()

The goal being that I have a function that generates the path to the ClientLibrary DLL and I don't have to construct the path myself.

Are you up for this project?

Jiří Činčura

unread,
Mar 20, 2025, 6:15:30 AMMar 20
to 'Mr. John' via firebird-net-provider
> Are you up for this project?

Nope.
Reply all
Reply to author
Forward
0 new messages