- 追加された行はこの色です。
- 削除された行はこの色です。
- DelphiからFirebirdにアクセスする方法まとめ へ行く。
- DelphiからFirebirdにアクセスする方法まとめ の差分を削除
001 | -(ここの記述は不完全です。詳しい方がいらっしゃいましたら補完お願いします) |
002 | *基本事項 [#w6ea079a] |
003 | -Firebird1.5まではInterbase6.0と互換性があるため、Interbaseのコンポーネントを使用可能。Firebird2.0以降はFirebirdに対応したコンポーネントを使う必要がある。 |
004 | -UTF8のSQLSubtype値がInterBaseと異なる。(Firebird=4、InterBase=59) |
005 | *FireDAC [#o7917f4f] |
006 | -XE3で追加。Enterprise版には標準添付。Professtional版には別途FireDAC Client/Server Add-On Packを購入することで追加可能。Firebird1.5以降をサポート。 |
007 | -XE4版(8.0.5)までは、過去バージョンのdelphiをサポートしていた為、インストーラを「/SHOWIDE」オプション付きで起動するとインストールするIDEを選択する事が出来たがXE5移行はインストーラが統合され指定バージョン専用となっている。 |
008 | +-2018年4月よりFireDAC Client/Server Add-On Packは購入不可となっている為、C/S環境で使用したい場合はEnterprise版を購入する必要がある。。 |
009 | -(詳細記述募集) |
010 | *BDE [#f92b74e2] |
011 | -Enterprise(C/S)版以上が必要。SQL-LINKでINTERBASEを指定することでFirebird1.5まで接続可能。(ベンダー非推奨) |
012 | -Dialect 3に未対応。 |
013 | -BDEは廃止予定 |
014 | *dbExpress [#rf4ceb9f] |
015 | -Delphi2010以降のEnterprise以上でFirebirdを正式サポート。それ以前のバージョンではInterbaseドライバを使用することで1.5までは接続可能(ベンダー非推奨) |
016 | -(詳細記述募集) |
017 | *IBObjects [#zf6d5d3e] |
018 | -Delphi5以降のProfessional以上(Enterprise不要)ですべてのFirebirdのバージョンに対応。 |
019 | -データアクセス用のコンポーネントだけでなく、独自のDBコントロールもある。 |
020 | -データアクセス用コンポには、Delphi付属のDBコントロール(TDBGridなど)と接続できるTIBO系と、独自コントロール(TIB_DBGridなど)接続用のTIB_系がある。同一プロジェクト内での混在は可能だが相互接続はできない。 |
021 | *ZeosLib [#QAbZzXJ] |
022 | -OSSのデータアクセスコンポーネント集。Firebird以外にも様々なDBに接続可能。 |
023 | -TDataSet互換で、TDataSourceを通して様々なヴィジュアルコンポーネントで利用可能。 |
025 | *FIBPlus [#k4eb9e8d] |
026 | -(詳細記述募集) |
027 | *ODBC [#b745c1a0] |
028 | -(詳細記述募集) |
029 | *IBX [#icad1f5e] |
030 | -(詳細記述募集) |
031 | *Universal Data Access Components (UniDAC) [#e7ae7b85] |
032 | -Firebird 1.x/2.x/3.xを含む、多くのデータベースに対応したDevart社のコンポーネント(有料)。 |
033 | -Delphi6/C++Builder6以降(Delphi8を除く)、Lazarus(Free Pascal 3.0)に対応。 |
034 | -Firebird 2のRETURNING節、EXECUTE BLOCK構文、Advanced Lockingに対応。 |
035 | -Firebird 3のBOOLEAN datatypeに対応。 |
036 | -Professional EditionはLinux, iOS, Androidアプリにも対応。 |
038 | |
039 | **使用例 [#te6b0101] |
040 | ※注 以下のソースコードはUniDAC Professional Edition用であり、コンパイルおよび動作の確認はしていません。 |
041 | type |
042 | TForm1 = class(TForm) |
043 | InterBaseUniProvider1: TInterBaseUniProvider; |
044 | UniConnection1: TUniConnection; |
045 | UniScript1: TUniScript; |
046 | UniSQL1: TUniSQL; |
047 | private |
048 | function SampleData: Boolean; |
049 | end; |
050 | |
051 | function TForm1.SampleData: Boolean; |
052 | var |
053 | SampleDbFile: string; |
054 | begin |
055 | Result := False; |
056 | |
057 | SampleDbFile := 'C:\data\sample.fdb'; |
058 | |
059 | UniConnection1.ProviderName := 'InterBase'; |
060 | UniConnection1.Server := '127.0.0.1'; // fbembed.dll/fbclient.dll使用時は''(空)にすること |
061 | UniConnection1.Username := 'SYSDBA'; |
062 | UniConnection1.Password := 'masterkey'; |
063 | UniConnection1.Database := SampleDbFile; |
064 | |
065 | with UniConnection1.SpecificOptions do begin |
066 | Clear; |
067 | Add('CharLength=4' ); // UTF8は4, UNICODE_FSSは3, CP943Cは2を指定 |
068 | Add('Charset=UTF8' ); // UNICODE_FSS, CP943C |
069 | Add('ClientLibrary=' ); // fbembed.dll, fbclient.dll |
070 | Add('SQLDialect=3' ); |
071 | Add('UseUnicode=True'); // True:フィールド長=文字数×CharLength(dtWideString/dtWideMemo) |
072 | end; |
073 | |
074 | try |
075 | // データベースファイル生成とテーブル生成 |
076 | UniScript1.Connection := UniConnection1; |
077 | UniScript1.SQL.Clear; |
078 | UniScript1.SQL.Add('CREATE DATABASE "' + SampleDbFile + '"'); |
079 | //UniScript1.SQL.Add(' DEFAULT CHARACTER SET UTF8'); |
080 | //UniScript1.SQL.Add(' PAGE_SIZE 8192'); |
081 | UniScript1.SQL.Add(';'); |
082 | UniScript1.SQL.Add('CREATE TABLE MYTABLE ('); |
083 | UniScript1.SQL.Add(' USER_CODE CHAR(3),'); |
084 | UniScript1.SQL.Add(' USER_NAME VARCHAR(50) CHARACTER SET UTF8'); |
085 | UniScript1.SQL.Add(');'); |
086 | UniScript1.NoPreconnect := True; // SQL実行前にデータベース接続をしない |
087 | UniScript1.Execute; |
088 | |
089 | // データベースに接続 |
090 | UniConnection1.Connected := True; |
091 | |
092 | // データ追加 |
093 | UniSQL1.SQL.Clear; |
094 | UniSQL1.SQL.Add('INSERT INTO MYTABLE'); |
095 | UniSQL1.SQL.Add(' (USER_CODE, USER_NAME)'); |
096 | UniSQL1.SQL.Add('VALUES'); |
097 | UniSQL1.SQL.Add(' (:P1, :P2)'); |
098 | UniSQL1.Params.ParamByName('P1').AsString := '001'; |
099 | UniSQL1.Params.ParamByName('P2').AsWideString := '鈴木花子'; |
100 | UniSQL1.Execute; |
101 | |
102 | except |
103 | on E: Exception do begin |
104 | UniConnection1.Connected := False; |
105 | ShowMessage(E.Message); |
106 | Exit; |
107 | end; |
108 | end; |
109 | |
110 | Result := True; |
111 | end; |