InterBase Express 入門
データベース アプリケーションの開発 への移動
InterBase Express(IBX)は、InterBase データベースからデータにアクセスする手段を提供する一連のデータ アクセス コンポーネントです。 InterBase 管理コンポーネント(InterBase が必要)については、InterBase データ アクセス コンポーネントの後で説明します。
目次
IBX コンポーネント
コンポーネント パレットの[InterBase]タブには以下のコンポーネントが含まれています。
InterBase スクリプト | |
InterBase SQL パーサー | |
名前は BDE コンポーネントと似ていますが、IBX コンポーネントはいくらか異なる点があります。 BDE に対応するコンポーネントごとに、以下のセクションで違いを説明します。
メモ: BDE アプリケーションを IBX アプリケーションに簡単に移行することはできません。 通常は、BDE コンポーネントを対応する IBX コンポーネントに置き換え、それからアプリケーションを再コンパイルしなければなりません。 ただし、それによって速度が向上し、InterBase の強力な機能を利用できるようになるため、移行に時間を割くだけの価値はあります。
IBDatabase
IBX.IBDatabase.TIBDatabase コンポーネントを使用すると、データベースへの接続を確立し、そこで 1 つ以上の並行トランザクションを実行することができます。 BDE とは違って IBX には独立したトランザクション コンポーネントがあるため、トランザクションとデータベース接続とを切り離すことができます。
データベース接続をセットアップするには:
- IBDatabase コンポーネントをフォームまたはデータ モジュール上にドロップします。
- [DatabaseName]プロパティを設定します。 ローカル接続の場合には、これはデータベース ファイルのドライブ、パス、およびファイル名です。 [Connected]プロパティを[True]に設定します。
- 有効なユーザー名とパスワードを入力し、[OK]をクリックすると、データベース接続が確立されます。
ヒント: ログインした後で[LoginPrompt]プロパティを[False]に設定すると、ユーザー名とパスワードを IBDatabase コンポーネントの[Params]プロパティに格納できます。 たとえば、システム管理者としてログインし、[LoginPrompt]プロパティを[False]に設定してから[Params]プロパティを編集すると、次のように表示されます。
user_name=sysdba password=masterkey
IBTransaction
BDE とは異なり、IBX では IBX.IBDatabase.TIBTransaction という独立したコンポーネントを使ってトランザクションを制御します。 この強力な機能によってトランザクションとデータベース接続を分離できるため、InterBase の 2 相コミット機能(複数の接続にまたがるトランザクション)や同じ接続を使った複数の並行トランザクションを利用することができます。
IBTransaction コンポーネントを使ってトランザクション コンテキストを処理します。このコンテキストには、1 つ以上のデータベース接続を含むことができます。 ただし、ほとんどの場合には、単純な 1 データベース/1 トランザクションのモデルで十分です。
トランザクションをセットアップするには:
- 上で説明したように IBDatabase 接続をセットアップします。
- IBTransaction コンポーネントをフォームまたはデータ モジュール上にドロップします。
- [DefaultDatabase]プロパティに IBDatabase コンポーネントの名前を設定します。
- [Active]プロパティを[True]に設定してトランザクションを開始します。
IBX データセット コンポーネント
IBX には、それぞれに独自の特性と適したタスクとを持つ、さまざまなデータセット コンポーネントの選択肢があります。
IBTable
IBX.IBTable.TIBTable コンポーネントを使用すると、SQL 文をまったく記述せずにテーブルやビューに対するライブ データセットをセットアップできます。
IBTable コンポーネントを構成するには:
- IBTable コンポーネントをフォームまたはデータ モジュールに追加します。
- 関連するデータベース コンポーネントおよびトランザクション コンポーネントを指定します。
- [TableName]のドロップダウン リストから関係の名前を指定します。
- Set the Active property to True.
IBQuery
IBX.IBQuery.TIBQuery コンポーネントを使用すると、InterBase DSQL 文を実行したり、結果セットを特定の列や行に制限したり、集計関数を利用したり、複数のテーブルを結合することが可能になります。
IBQuery コンポーネントでは読み取り専用データセットを提供していて、InterBase のクライアント/サーバー環境にうまく適合します。
IBQuery コンポーネントをセットアップするには:
- 上で説明したように IBDatabase 接続をセットアップします。
- 上で説明したように IBTransaction 接続をセットアップします。
- IBQuery コンポーネントをフォームまたはデータ モジュールに追加します。
- 関連するデータベース コンポーネントおよびトランザクション コンポーネントを指定します。
- 文字列リスト エディタで IBQuery の[SQL]プロパティに有効な SQL 文を入力します。
- Set the Active property to True.
IBDataSet
IBX.IBCustomDataSet.TIBDataSet コンポーネントを使用すると、InterBase DSQL 文を実行したり、結果セットを特定の列や行に制限したり、集計関数を利用したり、複数のテーブルを結合することが可能になります。 IBDataSet コンポーネントは IBQuery コンポーネントと似ていますが、IBUpdateSQL コンポーネントがなくてもライブ データセットをサポートできる点が異なります。
以下の例では、employee.gdb の COUNTRY テーブルに対してライブ データセットを作成する手順を示します。
- 上で説明したように IBDatabase 接続をセットアップします。
- 関連するデータベース コンポーネントおよびトランザクション コンポーネントを指定します。
- IBDataSet コンポーネントをフォームまたはデータ モジュールに追加します。
- 次のプロパティに SQL 文を入力します。
SelectSQL |
SELECT Country, Currency FROM Country |
RefreshSQL |
SELECT Country, Currency FROM Country WHERE Country = :Country |
ModifySQL |
UPDATE Country SET Country = :Country, Currency = :Currency WHERE Country = :Old_Country |
DeleteSQL |
DELETE FROM Country WHERE Country = :Old_Country |
InsertSQL |
INSERT INTO Country (Country, Currency) VALUES (:Country, :Currency) |
- 5. Set the Active property to True.
メモ: ダイアレクト 3 では、関数に渡すパラメータやフィールドの大文字/小文字が区別されます。 以下に例を示します。
FieldByName(EmpNo)
フィールドが 'EMPNO' の場合、ダイアレクト 3 では何も返されません。
IBStoredProc
InterBase の実行可能プロシージャには IBX.IBStoredProc.TIBStoredProc を使用します。 これは、最大で 1 行の情報だけを返すプロシージャです。 1 行以上のデータを返すストアド プロシージャ("Select" プロシージャ)には、IBQuery コンポーネントまたは IBDataSet コンポーネントを使用します。
IBSQL
高速かつ軽量なデータ操作が必要な場合には、IBX.IBSQL.TIBSQL コンポーネントを使用します。 データ定義や、データベースからデータベースへデータを大量に動かすような操作には、IBSQL コンポーネントが適しています。
次の例では、IBSQL コンポーネントを使ってジェネレータから次の値を返します。
- 上で説明したように IBDatabase 接続をセットアップします。
- IBSQL コンポーネントをフォームまたはデータ モジュールに追加し、[Database]プロパティにデータベース名を設定します。
- SQL 文を[SQL]プロパティの文字列リスト エディタに追加します。たとえば次のように指定します。
SELECT GEN_ID(MyGenerator, 1) FROM RDB$DATABASE
IBUpdateSQL
IBX.IBUpdateSQL.TIBUpdateSQL コンポーネントを使用すると、読み取り専用データセットを更新することができます。 IBUpdateSQL コンポーネントで IBQuery の出力を更新する手順は次のとおりです。
- 上で説明したように IBQuery コンポーネントをセットアップします。
- IBUpdateSQL コンポーネントをフォームまたはデータ モジュールに追加します。
- 次のプロパティに SQL 文を入力します。 [DeleteSQL]、[InsertSQL]、[ModifySQL]、[RefreshSQL]。
- IBQuery コンポーネントの[UpdateObject]プロパティに IBUpdateSQL コンポーネントの名前を設定します。
- IBQuery コンポーネントの[Active]プロパティを[True]に設定します。
IBSQLMonitor
IBX.IBSQLMonitor.TIBSQLMonitor コンポーネントを使用すると、アプリケーションと InterBase サーバーの間の通信を監視する診断ツールを開発できます。 IBDatabase コンポーネントの[TraceFlags]プロパティをオンにすると、アクティブな TIBSQLMonitor コンポーネントは接続の動作を追跡し、その出力をファイルやコントロールに送信することができます。
良い例が、TIBSQLMonitor コンポーネントとメモ コントロールを持つアプリケーションを別に作成する場合です。 この補助アプリケーションを実行し、本来のアプリケーションで IBDatabase コンポーネントの[TraceFlags]をオンにします。 本来のアプリケーションとやり取りすると、補助アプリケーションのメモ コントロールにデータが追加されるのがわかります。
IBDatabaseInfo
IBX.IBDatabaseInfo.TIBDatabaseInfo コンポーネントを使用すると、特定のデータベースについて、スイープ間隔、ODS バージョン、そのデータベースに現在関連付けられているユーザーの名前などの情報を取得することができます。
以下の手順は、データベースに現在接続しているユーザーを表示する IBDatabaseInfo コンポーネントをセットアップする例です。
IBDatabaseInfo コンポーネントをセットアップするには:
- 上で説明したように IBDatabase 接続をセットアップします。
- IBDatabaseInfo コンポーネントをフォームまたはデータ モジュールに追加し、[Database]プロパティにデータベース名を設定します。
- フォームにメモ コンポーネントを追加します。
- フォームにタイマ コンポーネントを追加し、間隔を設定します。
- タイマの[OnTimer]イベントのフィールドをダブルクリックし、次のようなコードを入力します。
Memo1.Text := IBDatabaseInfo.UserNames.Text; // Delphi example Memo1->Text = IBDatabaseInfo->UserNames->Text; // C++ example
IBEvents
IBEvents コンポーネントを使用すると、InterBase サーバーが出力したイベントに関心があると登録し、イベントを非同期で処理することができます。
IBEvents コンポーネントをセットアップするには:
- 上で説明したように IBDatabase 接続をセットアップします。
- IBEvents コンポーネントをフォームまたはデータ モジュールに追加し、[Database]プロパティにデータベース名を設定します。
- [Events]プロパティの文字列リスト エディタに、たとえば次のようにイベントを入力します。
IBEvents.Events.Add('EVENT_NAME'); // Delphi example IBEvents->Events->Add("EVENT_NAME"); // C++ Example
- 4. [Registered]プロパティを[True]に設定します。
InterBase 管理コンポーネント
InterBase をインストールすると、InterBase 管理コンポーネントを使用できるようになります。これにより、強力な InterBase Services API の呼び出しを使用できます。
これらのコンポーネントは IDE の[InterBase Admin]タブにあり、以下が含まれます。
メモ: これらの機能を使用するには InterBase をインストールする必要があります。
IBConfigService
IBX.IBServices.TIBConfigService オブジェクトを使用すると、ページ バッファ、非同期モード、予約領域、スイープ間隔などのデータベース パラメータを構成することができます。
IBBackupService
IBX.IBServices.TIBBackupService オブジェクトを使用すると、データベースをバックアップすることができます。 IBBackupService では、ブロック化因数、バックアップ ファイル名、データベース バックアップ オプションなどのパラメータを設定できます。
IBRestoreService
IBX.IBServices.TIBRestoreService オブジェクトを使用すると、データベースを復元することができます。 IBRestoreService では、ページ バッファ、ページ サイズ、データベース復元オプションなどのオプションを設定できます。
IBValidationService
IBX.IBServices.TIBValidationService オブジェクトを使用すると、データベースを検証したり、データベース トランザクションを調停することができます。 IBValidationService では、デフォルトのトランザクションの動作を設定したり、limbo トランザクション情報を返したり、その他のデータベース検証オプションを設定することができます。
IBStatisticalService
IBX.IBServices.TIBStatisticalService オブジェクトを使用すると、データ ページ、データベース ログ、ヘッダー ページ、インデックス ページ、システム関係などのデータベース統計情報を見ることができます。
IBLogService
IBX.IBServices.TIBLogService オブジェクトを使用すると、ログ ファイルを作成することができます。
IBSecurityService
IBX.IBServices.TIBSecurityService オブジェクトを使用すると、InterBase サーバーに対するユーザーのアクセスを管理することができます。 IBSecurityService では、ユーザー アカウントの作成/削除/変更、全ユーザーの表示、SQL ロールを使ったワーク グループのセットアップを行うことができます。
IBServerProperties
IBX.IBServices.TIBServerProperties コンポーネントを使用すると、構成パラメータやバージョンおよびライセンス情報など、データベース サーバーの情報を取得することができます。