Using the Open-Source Firebird Embedded Database Engine can be a frustrating endeavor, not because it is such a difficult database engine to use but as a result of its somewhat poor documentation, which is typical of Open-Source projects that were begun when the genesis of the Open-Source movement was just beginning to grow and catch the imaginations of the technical communities.
Quite a number of developers have remarked on this continuing weakness to the Firebird Database support system. However, with the demise of Microsoft’s SQL Server CE for desktop applications, the Firebird Database is now the single most competent replacement who want similar features that the popular database engine, SQLite, does not provide.
With the Firebird Embedded Database, unlike with SQL Server CE, you merely have to copy a few files from the installation directory and you are on your way. However, this simplicity in setup expects that both the Firebird files as well as your defined databases will reside in the same directory, which is also where your executable would reside.
What happens if you want to keep your databases in a separate directory? Doing so can give rise to the unexpected issue that suddenly your character sets cannot be found (the error message will yield a “not defined” error) disallowing to process your database calls. This error can be very frustrating to resolve and looking it up on the Internet may produce a lot of that frustration.
Not to worry. To correct the situation simply copy over the international directory (“intl”) that came with the embedded database installation into your executable directory where your other Firebird Database files are and your problem should be solved. Why this resolves the issue is not very clear from the research I did but it does work.
Simply making it habit to copy this directory into your application directory along with the Firebird Database files should keep this problem from happening in the future…