-(ここの記述は不完全です。詳しい方がいらっしゃいましたら補完お願いします) *基本事項 [#w6ea079a] -Firebird1.5まではInterbase6.0と互換性があるため、Interbaseのコンポーネントを使用可能。Firebird2.0以降はFirebirdに対応したコンポーネントを使う必要がある。 -UTF8のSQLSubtype値がInterBaseと異なる。(Firebird=4、InterBase=59) *FireDAC [#o7917f4f] -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 [#f92b74e2] -Enterprise(C/S)版以上が必要。SQL-LINKでINTERBASEを指定することでFirebird1.5まで接続可能。(ベンダー非推奨) -Dialect 3に未対応。 -BDEは廃止予定 *dbExpress [#rf4ceb9f] -Delphi2010以降のEnterprise以上でFirebirdを正式サポート。それ以前のバージョンではInterbaseドライバを使用することで1.5までは接続可能(ベンダー非推奨) -(詳細記述募集) *IBObjects [#zf6d5d3e] -Delphi5以降のProfessional以上(Enterprise不要)ですべてのFirebirdのバージョンに対応。 -データアクセス用のコンポーネントだけでなく、独自のDBコントロールもある。 -データアクセス用コンポには、Delphi付属のDBコントロール(TDBGridなど)と接続できるTIBO系と、独自コントロール(TIB_DBGridなど)接続用のTIB_系がある。同一プロジェクト内での混在は可能だが相互接続はできない。 *ZeosLib [#QAbZzXJ] -OSSのデータアクセスコンポーネント集。Firebird以外にも様々なDBに接続可能。 -TDataSet互換で、TDataSourceを通して様々なヴィジュアルコンポーネントで利用可能。 -https://sourceforge.net/projects/zeoslib/ *FIBPlus [#k4eb9e8d] -(詳細記述募集) *ODBC [#b745c1a0] -(詳細記述募集) *IBX [#icad1f5e] -(詳細記述募集) *Universal Data Access Components (UniDAC) [#e7ae7b85] -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/ **使用例 [#te6b0101] ※注 以下のソースコードは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;