- (ここの記述は不完全です。詳しい方がいらっしゃいましたら補完お願いします)
基本事項
- 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;