この記事は公開から3年以上経過しています。
オンプレシステムの保守業務のように古いFrameworkやVisual Studioを利用して開発を行う際に、NuGetパッケージを使わずにFirebird Embeddedデータベースを利用する方法。
対応
-
Firebird公式から64-bit Embedded(または32-bit Embedded)のZIPをダウンロード。
(本例では64bit版の最新Firebird-2.5.9.27139-0_x64_embed.zip
をダウンロード) -
C:\Tools
など任意のフォルダに上記ZIPを解凍。
(本例ではC:\Tools\Firebird-2.5.9.27139-0_x64_embed
へ配置) -
SourceForgeからFirebird ADO.NET Providerをダウンロード。
(本例では.NET Framework3.5で使用できるNETProvider-3.2.0.0-NET35.7z
をダウンロード) -
Visual Studioのプロジェクトディレクトリまたはソリューションディレクトリに上記7ZIPを解凍。
(本例は単一プロジェクトのためプロジェクトディレクトリへ配置)
-
Visual Studioのソリューションエクスプローラのプロジェクトのコンテキストメニューから
追加
→既存の項目
で、手順2のFirebird EmbeddedライブラリDLL群をリンクとして追加
で追加する。
追加後↓
-
追加したDLLを全選択し、プロパティ欄の詳細から
ビルドアクション
をなし
、出力ディレクトリにコピー
を新しい場合はコピーする
に設定する。
-
Viusal Studioのソリューションエクスプローラのプロジェクトの
参照
のコンテキストメニューから参照の追加
で参照マネージャーを開き、参照
ボタンを押下して手順4のFirebird ADO.NET ProviderライブラリDLLを選択してアセンブリ参照に追加する。
以上でVisual Studioのプロジェクト設定は完了です。
サンプルソースコード
以下、新規FDBファイルをEXEのカレントディレクトリ内に作成したうえで新規テーブルを追加するサンプルです。
using FirebirdSql.Data.FirebirdClient;
namespace FirebirdTest210508
{
class Program
{
static void Main(string[] args)
{
// 接続文字列生成
var connectionString = new FbConnectionStringBuilder
{
Database = @"test.fdb",
Charset = "utf8",
UserID = "SYSDBA",
Password = "masterkey",
ServerType = FbServerType.Embedded
}.ConnectionString;
// FDBファイル生成
FbConnection.CreateDatabase(connectionString);
// FDBにテーブルを追加
using (var con = new FbConnection(connectionString))
{
con.Open();
using (var fbCmd = new FbCommand("create table test_Tbl (id integer, val integer)", con))
{
fbCmd.ExecuteNonQuery();
}
}
}
}
}
ちなみに参考ウェブサイトの公式情報に書かれているように、Firebird Embeddedでは接続文字列のUserIDとPasswordを任意の値に変更しても認証ができずFDBファイル内のデータも暗号化されないため、重要な情報を扱う場合は端末利用者がFDBファイルに直接アクセスできないようにファイルシステムレベルでのアクセス制御を行なったうえで、Firebird Server経由でログイン認証やアクセス制御を行うといった対応が必要となります。
参考ウェブサイトなど
-
Firebird Documentation
Windows Embedded -
Firebird Documentation
Firebird File and Metadata Security
以上です。