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