Delphi でFirebird

個人で使うのに何か良いデータベースはないか、しばらく検討していたのだが
Firebirdが良さそうだ。
それにFirebirdは、Borland 社から ソースコードが公開されたInterBaseを元に
オープンソースのデータベースソフトとして開発されてきているのでDelphiを使う事の
多い私には非常に相性が良さそうだ。
しかしDelphiもいろいろなパッケージがある。
なかでの個人購入としては馬鹿のように高いEnterprise版!!
どうにかならないんだろうか?高くて絶対個人では買えませんね。
それに残念なことに、Enterprise版ならFirebird用に対応しているらしい。
しかし、私の持っているのはDelphi 2010 Professional・・・悲しい・・・
でも、今のところProfessional版でもInterBaseコンポーネントを使う事によって
FireBirdが操作出来るようです。
InterBaseを元に作成されたFirebirdならではといったところです。
さて、しかしFirebirdはなんだかDelphi での使い方をネットで探っても
さっぱりヒットしませんね。
やはり、Delphiは過去の言語なのでしょうか?日本語のサイト少なすぎです。
さて実際使ってみて、メモコンポーネントの内容をそのまま保存しようと思うと
タイプがvarcharではうまくいかず、結局Blobフィールドが良い事が判ったの
ですが、Blobフィールドの読み書きの方法が調べてもなかなか判りませんでした。
実際の使い方の簡単な覚え書きです。
まずはテーブルを作成

CREATE TABLE NANDEMO
(
KIROKUNO integer NOT NULL,
NITIJI timestamp,
OMOITUKI blob sub_type 1,
PRIMARY KEY (KIROKUNO)
);

OMOITUKI フィールドが Blobフィールドです。
サブタイプはTEXTのみを扱うのでsub_type 1です。
コンポーネントはTIBDatabase、TIBTransaction、TIBQueryとTDataSouceを使うとします。
あとMemoコンポーネント、Editコンポーネント、Labelコンポーネントを配置します。
登録は

var
BS:TMemoryStream;
begin
//登録
try
//新規登録
BS := TMemoryStream.Create;
IBQuery1.SQL.Clear;
IBQuery1.Params.Clear;
IBQuery1.SQL.Add(‘INSERT INTO ‘);
IBQuery1.SQL.Add(‘NANDEMO (NITIJI, OMOITUKI)’);IBQuery1.SQL.Add(‘values (:COL1,:COL2)’);
//本日の日付時間     IBQuery1.ParamByName(‘COL1’).AsDateTime := Now;
//メモの文字列をStreamに保存
Memo1.Lines.SaveToStream(BS);
//Streamからパラメータに書き出す
IBQuery1.ParamByName(‘COL2’).LoadFromStream(BS,ftBlob);
IBQuery1.ExecSQL;
IBTransaction1.Commit;
except
IBTransaction1.RollBack;
raise;
end;
end;

の様にする。
最初は判らずに
IBQuery1.ParamByName(‘COL2’).AsString := Memo1.Text;
の様にやってみたがうまくいかなかった。
読み出しは

var
BS: TStream;
BlobField: TField;
begin
if DataSource1.DataSet.RecordCount > 0 then
begin
Label1.Caption := DataSource1.DataSet.FieldByName(‘KIROKUNO’).AsString;
Edit1.Text := DataSource1.DataSet.FieldByName(‘NITIJI’).AsString;
BlobField := DataSource1.DataSet.FieldByName(‘OMOITUKI’);
BS := DataSource1.DataSet.CreateBlobStream(BlobField,bmRead);
Memo1.Lines.LoadFromStream(BS);
end;
end;

以上。
簡単だがBlobフィールドの読み書きはうまくいっている。
しかし、日本の「Delphi」に詳しい人たち。もう少しネット上に足跡を残して下さい。
Delphiの事で検索すると、英語と中国語ばかりです。
サンデープログラマーにはずいぶん敷居が高くなって来てますね、私もその一人で
非常に困っている毎日です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA