Blackfishデータベースを使ったDelphiアプリを開発・配信する方法


必要に駆られて10年ぶりくらいにRDBMSを使ったちょっとしたアプリを作ることになった。
とりあえず手持ちのDelphi 2007にはBlashfishという組み込み系のデータベースが付属しており、パフォーマンスも悪くないようなので、これを使うことに。

ところが、、、これが結構はまった。
まずはDBの新規作成方法が分からずしばらくはまって、次にアプリでどうコードするのか分からずはまり、最後にアプリの配布ではまった。簡単なテストアプリができるまで丸一日掛かってしまった・・・。(正味5時間くらいか?)

という訳で、今後のために備忘録として記録に残しておこう。
要約すると、BlackfishデータベースをDelphi2007から操作するためにdbExpressのコンポーネントを使用するまでの手順。さらに出来上がったアプリをDelphiが入っていないWinXPに配布する時の方法と注意点、というところだ。

1.Blackfishデータベースの作成
まずdbExpressでBlackfishの新規接続を作成する必要がある。これに関しては
http://support.codegear.com/jp/article/37268
が詳しい(dbExpressのセクションだけでOK)。

ただしここではまったのが、DBファイルの新規作成方法。
これは↓を読むまで苦労した。
http://dhive.jp/blog/yama/?p=98
要は詳細設定でcreateプロパティをTrueにせよということですね。

2.テーブルの作成
これはさほど難しくない。
Delphi IDEのデータエクスプローラで、1で作成したBlackfishのコネクションを右クリックしてテーブルの新規作成を行えばよい。

3.プログラムからのアクセス
FormにdbExpressタブにあるTSQLConnectionとTButtonを貼り付け、以下の通りイベントを作成すればOK。

procedure TForm1.Button1Click(Sender: TObject);
var
  QRY: TSQLQuery;
  idx: integer;
begin
  QRY := TSQLQuery.Create(Self);
  try
    QRY.SQLConnection := SQLConnection1;
    SQLConnection1.Connected := True;
    QRY.SQL.Clear;
    QRY.SQL.Add('Select * From TESTTABLE');
      QRY.Open;
      for idx := 0 to QRY.RecordCount - 1 do
      begin
        ShowMessage(QRY.FieldByName('NAME').AsString);
        QRY.Next;
      end;
      QRY.Close;
      SQLConnection1.Connected := False;
  finally
    QRY.free;
  end;
end;

procedure TForm1.SQLConnection1Login(Database: TSQLConnection;
  LoginParams: TWideStrings);
begin
  LoginParams.Add('password=masterkey');
end;

4.他のPCでアプリを動作させるため、Blackfishを配布
これがかなりはまった。
基本的には↓に書かれている通り、以下の4つのファイルを配布先のPCにコピーすればよい。
http://edn.embarcadero.com/article/36955
-bsqlserver.exe
-Borland.Data.Blackfish.LocalClient.dll
-BlackfishSQL.slip
-bsqlserver.exe.config (オプション)

ただし、ここでいくつかはまり要素がある↓
5. BSQLServer.exe(サービス)のインストール
-installオプション付きで実行しても、サービスに登録されるだけで、実際にはサービスは起動されていないので、サービスマネージャから実行する必要がある。

6.TSQLConnectionの設定追加
実はもう一つ重要な設定がある。(しかもドキュメントされていない)。
↓に書かれている通り、dbExpressクライアントの設定に以下を追加する。
http://blogs.embarcadero.com/teamj/2008/03/12/124/

設定は↓のBlackfishの部分をそのままコピペでOK。
C:\Users\Public\Documents\RAD Studio\dbExpress
(これはVistaの場合。XPはAll Users)

7.midas.dllと.NETプラットフォーム2.0(ランタイム)
更に、配布先のPCには上記の4.以外に midas.dll(\systtem32\にある)も配布する必要がある。また、Blackfishは.NET2.0が必要なので、マイクロソフトからそれを入手してインストールする必要がある。
https://forums.embarcadero.com/thread.jspa?threadID=9395&tstart=1

↓.NET Framework ver2.0のダウンロード
http://www.microsoft.com/Downloads/thankyou.aspx?familyId=0856eacb-4362-4b0d-8edd-aab15c5e04f5&displayLang=ja

ちなみに、配布先のPCにWindowsインストーラ3.0が入っていない場合は、これも必要。
↓Windowsインストーラ v3.0のダウンロード
http://www.microsoft.com/Downloads/details.aspx?familyid=5FBC5470-B259-4733-A914-A956122E08E8&displaylang=ja

これでようやく他のPCでも作ったアプリが動作するようになった。
さすがにこれらを全部自力で発見するのは辛い。せっかくの手軽なDBアプリ構築環境(Delphi + Blackfish)なのに、肝心の部分がCodeGear(旧Borland、今はEmbarcadero)によって解説されていないのは非常にもったいない。

Leave a Comment

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