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(
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)によって解説されていないのは非常にもったいない。
最近のコメント