🐡
C++Builder11.3でFirebird Embedded 4.0 を使用する
Firebird Embeddedとは
Firebirdのデータベースエンジンをユーザアプリケーションに組み込む仕組み。Firebird2.5の時は専用インストーラが存在したが、3.0以降では1つに統合されている。Firebird3.0や4.0では配置するファイルが10個程度ある。SQLITEとほぼ同等ではあるが、Firebirdの方が一般的なDBユースに近く、同時書き込みにも対応しているため厳密な管理が必要な場合はこちらを採用したい。
必要なファイル
配置するファイルは複数あるため、忘れないようにすること。
ここではFirebrid 4.0 Embeddedについて記載する。
公式ではインストーラ以外にZIP版もあるため、こちらをダウンロードしてくるとよい。
以下が必要なファイルである。これらをユーザアプリケーションのフォルダに配置する。
No | Firebird |
---|---|
1 | intl\fbintl.conf |
2 | intl\fbintl.dll |
3 | plugins\engine13.dll |
4 | firebird.conf |
5 | icudt63l.dat |
6 | fbclient.dll |
7 | ib_util.dll |
8 | icudt63.dll |
9 | icuin63.dll |
10 | icuuc63.dll |
11 | msvcp140.dll |
12 | vcruntime140.dll |
13 | firebird.msg |
また、公式マニュアルも参考にされたし。
サンプルコード
void __fastcall TForm4::Button2Click(TObject *Sender)
{
TFDConnection *connection = new TFDConnection(NULL);
connection->DriverName = "FB";
connection->Params->Database = GetCurrentDir() + "\\MyDb.fdb";
TFDQuery *query = new TFDQuery(NULL);
query->Connection = connection;
// CREATE DATABASEはFDScriptから実行(FDQeuryでは実行できない)
TFDScript *script = new TFDScript(NULL);
script->Connection = connection;
script->SQLScripts->Add();
script->SQLScripts->Items[0]->SQL->Text = "CREATE DATABASE 'MyDb.fdb' USER 'SYSDBA' PASSWORD 'masterkey';";
// Firebirdのfbclinet.dllのファイルの場所を指定
TFDPhysFBDriverLink *link = new TFDPhysFBDriverLink(connection);
link->Embedded = true;
link->ThreadSafe = true;
link->VendorLib = GetCurrentDir() + "\\FB40\\fbclient.dll";
script->ExecuteAll(); // CREATE DATABASE
// テーブル定義
query->SQL->Clear();
query->SQL->Text = "CREATE TABLE MyTable(id integer, name VARCHAR(16), PRIMARY KEY(id))";
query->ExecSQL();
// テストデータ投入
query->SQL->Clear();
query->SQL->Text = "INSERT INTO MyTable(id, name) VALUES (1,'namae');";
query->ExecSQL();
// クエリ
query->SQL->Clear();
query->SQL->Text = "SELECT * FROM MyTable;";
query->Open();
int count = query->RecordCount; // count = 1になる
connection->Close();
delete link;
delete connection;
delete query;
}
Discussion