Firebird DBの準備
ゲストOS側で動作確認用DB(TestData)を作成します。「gsec」、「isql-fb」コマンドを使用したDB操作を行います。
任意のユーザー(sta)でホストおよびゲストOSにログインして作業を行うものとして解説を行います。
DBおよびテーブル作成用SQLファイルの準備
「~/src/sql/firebird」に以下のDBおよびテーブル作成用SQLファイルを用意します。
-- isql-fb -i ~/src/sql/firebird/TestData.sql -- -- データベース削除 -- connect '/home/sta/data/firebird/TestData.fdb' -- user 'sta' -- password 'password'; -- drop database; -- データベース作成 create database '/home/sta/data/firebird/TestData.fdb' user 'sta' password 'password' default character set UTF8;
-- isql-fb -i ~/src/sql/firebird/Products.sql -- -- データベース接続 connect '/home/sta/data/firebird/TestData.fdb' user 'sta' password 'password'; -- Products テーブル削除 -- drop table Products; -- Products テーブル作成 create table Products( ProductID integer not null primary key, ProductName varchar(25) not null, Price double precision, ProductDescription varchar(128)); -- INSERT 実行 insert into Products (ProductID, ProductName, Price, ProductDescription) values (0, 'Firebird', null, 'Firebird 2.1.1'); -- INSERT 実行 insert into Products (ProductID, ProductName, Price, ProductDescription) values (1, 'Clamp', 12.48, 'Workbench clamp'); -- INSERT 実行 カラムの順番を変えたパターン insert into Products (ProductName, ProductID, Price, ProductDescription) values ('Screwdriver', 50, 3.17, 'Flat head'); -- INSERT 実行 カラムリスト指定なし、入力値リストはカラム順パターン insert into Products values (75, 'Tire Bar', null, 'Tool for changing tires.'); -- INSERT 実行 ProductDescription カラムの指定なしパターン insert into Products (ProductID, ProductName, Price) values (3000, '3mm Bracket', .52); -- UPDATE 実行 update Products set ProductName = 'Flat Head Screwdriver' where ProductID = 50; -- SELECT 実行 確認用 select * from Products;
ユーザーの追加
ユーザー(sta)を追加します。
$ gsec -user sysdba -pa password GSEC> add sta -pw password GSEC> quit
データベース作成
$ mkdir -p ~/data/firebird $ chmod a+w ~/data/firebird $ isql-fb -i ~/src/sql/firebird/TestData.sql
テーブル作成
$ isql-fb -i ~/src/sql/firebird/Products.sql
データプロバイダの準備
ホストOS側でMonoDevelopを使用して「FirebirdSql.Data.FirebirdClient」のソースからビルドを行い、GACへ登録します。
ビルド
「FirebirdClient-2.1.0-Src.zip」を任意の場所(~/tmp/Firebird/FirebirdClient-2.1.0-Src)に展開し、MonoDevelopからプロジェクトファイル「~/tmp/Firebird/FirebirdClient-2.1.0-Src/NETProvider/source/FirebirdSql/FirebirdSql.Data.FirebirdClient.csproj」を開きます。
メニュー[プロジェクト]−[オプション]から以下の変更を行います。
TRACE;DEBUG;MONO;LINUX;NET_20;EXTERNAL_ENGINE
/home/sta/tmp/Firebird/FirebirdClient-2.1.0-Src/NETProvider/source/FirebirdSql/FirebirdSql.Data.FirebirdClient.snk
変更後、ビルドを実行します。いくつか警告が表示されますが問題はないようです。
GACへ登録
gacutilコマンドを使用してGACへ登録します。
$ cd ~/tmp/Firebird/FirebirdClient-2.1.0-Src/NETProvider/source/FirebirdSql/bin/Debug $ sudo /opt/mono/2.4/bin/gacutil -i FirebirdSql.Data.FirebirdClient.dll -package 2.0 Package exported to: /opt/mono/2.4/lib/mono/2.0/FirebirdSql.Data.FirebirdClient.dll -> ../gac/FirebirdSql.Data.FirebirdClient/2.1.0.0__3750abcc3150b00c/FirebirdSql.Data.FirebirdClient.dll Installed FirebirdSql.Data.FirebirdClient.dll into the gac (/opt/mono/2.4/lib/mono/gac)
「FirebirdClient-2.1.0-Src.zip」にはビルド用のmakefileが含まれているので、それを使用したビルドも可能なはずですが、何故かそのままでは使用できないので、修正したmakefileを本稿に添付しました(FirebirdClientディレクトリ)。
$ cd ~/tmp/Firebird/FirebirdClient-2.1.0-Src/NETProvider/build/linux $ make $ cd mono/linux $ sudo /opt/mono/2.4/bin/gacutil -i FirebirdSql.Data.FirebirdClient.dll -package 2.0