- (ここの記述は不完全です。詳しい方がいらっしゃいましたら補完お願いします)
基本事項
- Firebird1.5まではInterbase6.0と互換性があるため、Interbaseのコンポーネントを使用可能。Firebird2.0以降はFirebirdに対応したコンポーネントを使う必要がある。
- UTF8のSQLSubtype値がInterBaseと異なる。(Firebird=4、InterBase=59)
FireDAC
- XE3で追加。Enterprise版には標準添付。Professtional版には別途FireDAC Client/Server Add-On Packを購入することで追加可能。Firebird1.5以降をサポート。
- XE4版(8.0.5)までは、過去バージョンのdelphiをサポートしていた為、インストーラを「/SHOWIDE」オプション付きで起動するとインストールするIDEを選択する事が出来たがXE5移行はインストーラが統合され指定バージョン専用となっている。
- 2018年4月よりFireDAC Client/Server Add-On Packは購入不可となっている為、C/S環境で使用したい場合はEnterprise版を購入する必要がある。。
- (詳細記述募集)
BDE
- Enterprise(C/S)版以上が必要。SQL-LINKでINTERBASEを指定することでFirebird1.5まで接続可能。(ベンダー非推奨)
- Dialect 3に未対応。
- BDEは廃止予定
dbExpress
- Delphi2010以降のEnterprise以上でFirebirdを正式サポート。それ以前のバージョンではInterbaseドライバを使用することで1.5までは接続可能(ベンダー非推奨)
- (詳細記述募集)
IBObjects
- Delphi5以降のProfessional以上(Enterprise不要)ですべてのFirebirdのバージョンに対応。
- データアクセス用のコンポーネントだけでなく、独自のDBコントロールもある。
- データアクセス用コンポには、Delphi付属のDBコントロール(TDBGridなど)と接続できるTIBO系と、独自コントロール(TIB_DBGridなど)接続用のTIB_系がある。同一プロジェクト内での混在は可能だが相互接続はできない。
ZeosLib
- OSSのデータアクセスコンポーネント集。Firebird以外にも様々なDBに接続可能。
- TDataSet互換で、TDataSourceを通して様々なヴィジュアルコンポーネントで利用可能。
- https://sourceforge.net/projects/zeoslib/
FIBPlus
- (詳細記述募集)
ODBC
- (詳細記述募集)
IBX
- (詳細記述募集)
Universal Data Access Components (UniDAC)
- Firebird 1.x/2.x/3.xを含む、多くのデータベースに対応したDevart社のコンポーネント(有料)。
- Delphi6/C++Builder6以降(Delphi8を除く)、Lazarus(Free Pascal 3.0)に対応。
- Firebird 2のRETURNING節、EXECUTE BLOCK構文、Advanced Lockingに対応。
- Firebird 3のBOOLEAN datatypeに対応。
- Professional EditionはLinux, iOS, Androidアプリにも対応。
- https://www.devart.com/unidac/
使用例
※注 以下のソースコードはUniDAC Professional Edition用であり、コンパイルおよび動作の確認はしていません。
type
TForm1 = class(TForm)
InterBaseUniProvider1: TInterBaseUniProvider;
UniConnection1: TUniConnection;
UniScript1: TUniScript;
UniSQL1: TUniSQL;
private
function SampleData: Boolean;
end;
function TForm1.SampleData: Boolean;
var
SampleDbFile: string;
begin
Result := False;
SampleDbFile := 'C:\data\sample.fdb';
UniConnection1.ProviderName := 'InterBase';
UniConnection1.Server := '127.0.0.1'; // fbembed.dll/fbclient.dll使用時は''(空)にすること
UniConnection1.Username := 'SYSDBA';
UniConnection1.Password := 'masterkey';
UniConnection1.Database := SampleDbFile;
with UniConnection1.SpecificOptions do begin
Clear;
Add('CharLength=4' ); // UTF8は4, UNICODE_FSSは3, CP943Cは2を指定
Add('Charset=UTF8' ); // UNICODE_FSS, CP943C
Add('ClientLibrary=' ); // fbembed.dll, fbclient.dll
Add('SQLDialect=3' );
Add('UseUnicode=True'); // True:フィールド長=文字数×CharLength(dtWideString/dtWideMemo)
end;
try
// データベースファイル生成とテーブル生成
UniScript1.Connection := UniConnection1;
UniScript1.SQL.Clear;
UniScript1.SQL.Add('CREATE DATABASE "' + SampleDbFile + '"');
//UniScript1.SQL.Add(' DEFAULT CHARACTER SET UTF8');
//UniScript1.SQL.Add(' PAGE_SIZE 8192');
UniScript1.SQL.Add(';');
UniScript1.SQL.Add('CREATE TABLE MYTABLE (');
UniScript1.SQL.Add(' USER_CODE CHAR(3),');
UniScript1.SQL.Add(' USER_NAME VARCHAR(50) CHARACTER SET UTF8');
UniScript1.SQL.Add(');');
UniScript1.NoPreconnect := True; // SQL実行前にデータベース接続をしない
UniScript1.Execute;
// データベースに接続
UniConnection1.Connected := True;
// データ追加
UniSQL1.SQL.Clear;
UniSQL1.SQL.Add('INSERT INTO MYTABLE');
UniSQL1.SQL.Add(' (USER_CODE, USER_NAME)');
UniSQL1.SQL.Add('VALUES');
UniSQL1.SQL.Add(' (:P1, :P2)');
UniSQL1.Params.ParamByName('P1').AsString := '001';
UniSQL1.Params.ParamByName('P2').AsWideString := '鈴木花子';
UniSQL1.Execute;
except
on E: Exception do begin
UniConnection1.Connected := False;
ShowMessage(E.Message);
Exit;
end;
end;
Result := True;
end;
![[Firebird Wiki]](https://firebirdwiki.jp/image/firebirdwiki.png)