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
