InterBase Express の概要
InterBase Express(IBX)は,InterBase データベースのデータにアクセスするためのデータアクセスコンポーネントのセットです。InterBase 管理コンポーネントを使用するには InterBase 7.5 が必要です。InterBase 管理コンポーネントについては,InterBase データアクセスコンポーネントの後に説明されています。
IBX コンポーネント
コンポーネントパレットの[InterBase]タブには,以下のコンポーネントがあります。
名前が BDE コンポーネントに似ている IBX コンポーネントでも,機能などは少し異なります。以下のセクションでは,BDE に対応しているコンポーネントごとにこうした相異について説明します。
BDE から IBX へのアプリケーションの移行は簡単ではありません。通常は,BDE コンポーネントを対応する IBX コンポーネントに置き換えて,アプリケーションを再コンパイルしなければなりません。しかし,それで実現されるスピードに加えて,強力な InterBase 機能を利用できることを考えれば,移行する価値は十分にあります。
IBDatabase
IBDatabase.TIBDatabase コンポーネントを使用すると,1 つ以上のトランザクションを並行して実行するデータベース接続を確立できます。BDE と違って,IBX には別のトランザクションコンポーネントがあるので,それぞれのトランザクションやデータベース接続を別々に扱うことができます。
データベース接続を確立するには,以下の手順にしたがいます。
- フォームまたはデータモジュールに IBDatabase コンポーネントをドロップします。
- DatabaseName プロパティの値を指定します。ローカルな接続の場合は,データベースファイルのドライブ,パス,およびファイル名を入力します。Connected プロパティを true に設定します。
- 有効なユーザー名とパスワードを入力し,[OK]をクリックしてデータベース接続を確立します。
警告: 参考:ログイン後に LoginPrompt プロパティを false に設定すると,IBDatabase コンポーネントの Params プロパティにユーザー名とパスワードを指定できます。たとえば,システム管理者としてログインし,LoginPrompt プロパティを false に設定してから Params プロパティを編集すると,次のようなコードが表示されます。
user_name=sysdba
password=masterkey
IBTransaction
Borland Database Engine と違って,IBX では IBDatabase.TIBTransaction という別のコンポーネントを使ってトランザクションを制御します。この強力な機能により,それぞれのトランザクションやデータベース接続を別々に扱うことができるので,InterBase の 2 層コミット機能(複数の接続にまたがるトランザクション)を利用したり,同一の接続で複数のトランザクションを並行して実行することができます。
IBTransaction コンポーネントを使用すると,1 つ以上のデータベース接続を利用するトランザクションコンテキストを扱うことができます。ただし,ほとんどの場合,シンプルな単一データベース/単一トランザクションモデルで十分に機能します。
トランザクションを実行するには,以下の手順にしたがいます。
- 上記の手順で IBDatabase 接続を確立します。
- フォームまたはデータモジュールに IBTransaction コンポーネントをドロップします。
- DefaultDatabase プロパティに IBDatabase コンポーネントの名前を指定します。
- Active プロパティを true に設定して,トランザクションを開始します。
IBX データセットコンポーネント
IBX では,さまざまなデータセットコンポーネントを選択でき,それぞれに特徴と適したタスクがあります。
IBTable
IBTable.TIBTable コンポーネントを使用すると,SQL 文を入力しなくても,テーブルまたはビューにライブデータセットを設定できます。
IBTable コンポーネントは,以下の手順で簡単に設定できます。
- フォームまたはデータモジュールに IBTable コンポーネントを追加します。
- 関連付けられたデータベースコンポーネントとトランザクションコンポーネントを指定します。
- TableName ドロップダウンリストからテーブル間の関係の名前を指定します。
- Active プロパティを true に設定します。
IBQuery
IBQuery.TIBQuery コンポーネントを使用すると,InterBase の DSQL 文を実行したり,結果セットを特定の列と行に制限することができます。また,集計関数を利用したり,複数のテーブルを結合することもできます。
IBQuery コンポーネントは読み出し専用のデータセットを提供し,InterBase クライアント/サーバー環境に適しています。IBQuery コンポーネントを設定するには,以下の手順にしたがいます。
- 上記の手順で IBDatabase 接続を確立します。
- 上の手順で IBTransaction 接続を確立します。
- フォームまたはデータモジュールに IBQuery コンポーネントを追加します。
- 関連付けられたデータベースコンポーネントとトランザクションコンポーネントを指定します。
- 文字列リストエディタで IBQuery の SQL プロパティに有効な SQL 文を入力します。
- Active プロパティを true に設定します。
IBDataSet
IBCustomDataSet.TIBDataSet コンポーネントを使用すると,InterBase の DSQL 文を実行したり,結果セットを特定の列と行に制限することができます。また,集計関数を利用したり,複数のテーブルを結合することもできます。IBDataSet コンポーネントは,IBUpdateSQL コンポーネントを使用せずにライブデータセットをサポートすることを除いて,IBQuery コンポーネントと同じです。
以下に,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) |
- Active プロパティを true に設定します。
メモ: 関数に渡されるパラメータと項目は,ダイアレクト 3 では大文字と小文字が区別されます。次に例を示します。
FieldByName(EmpNo)
項目が「EMPNO」の場合,ダイアレクト 3 ではこの関数は何も返しません。
IBStoredProc
InterBase 実行形式手続き(最大で 1 行の情報を返す手続き)として IBStoredProc.TIBStoredProc を使用します。複数行のデータを返すストアドプロシージャ(「Select」プロシージャ)の場合は,IBQuery または IBDataSet コンポーネントを使用します。
IBSQL
IBSQL.TIBSQL コンポーネントは,速度と軽さが求められるデータ操作に使用します。IBSQL コンポーネントは,データの定義や別のデータベースへのデータのポンピングといった操作に適しています。
以下の例では,IBSQL コンポーネントを使ってジェネレータから次の値を返しています。
- 上記の手順で IBDatabase 接続を確立します。
- フォームまたはデータモジュールに IBSQL コンポーネントを配置して,Database プロパティにデータベースの名前を指定します。
- SQL プロパティの文字列リストエディタに,次のような SQL 文を追加します。
SELECT GEN_ID(MyGenerator, 1) FROM RDB$DATABASE
IBUpdateSQL
IBUpdateSQL.TIBUpdateSQL コンポーネントを使用すると,読み出し専用のデータセットを更新できます。また,以下のように IBUpdateSQL コンポーネントを使用すると,IBQuery の出力を更新できます。
- 上の手順で IBQuery コンポーネントを設定します。
- フォームまたはデータモジュールに IBUpdateSQL コンポーネントを追加します。
- DeleteSQL,InsertSQL,ModifySQL,RefreshSQL の各プロパティに SQL 文を入力します。
- IBQuery コンポーネントの UpdateObject プロパティを IBUpdateSQL コンポーネントの名前に指定します。
- IBQuery コンポーネントの Active プロパティを true に設定します。
IBSQLMonitor
IBSQLMonitor.TIBSQLMonitor コンポーネントを使用すると,アプリケーションと InterBase サーバー間の通信を監視するための診断機能付きツールを開発できます。IBDatabase コンポーネントの TraceFlags プロパティが有効になっている場合には,アクティブな TIBSQLMonitor コンポーネントは接続の動作を記録して,その出力をファイルやコントロールに送信します。
TIBSQLMonitor コンポーネントと Memo コントロールがある別のアプリケーションを作成する場合が好例です。この二次アプリケーションを実行し,一次アプリケーションでは IBDatabase コンポーネントの TraceFlags をアクティブにします。一次アプリケーションと対話すると,二次アプリケーションのメモコントロールにデータが記録されることがわかります。
IBDatabaseInfo
IBDatabaseInfo.TIBDatabaseInfo コンポーネントを使用すると,スイープ間隔,ODS のバージョン,現在このデータベースにアタッチしているユーザー名など,特定のデータベースに関する情報を取得できます。
たとえば,現在データベースに接続しているユーザーを表示するように IBDatabaseInfo コンポーネントを設定するには,以下の手順にしたがいます。
- 上記の手順で IBDatabase 接続を確立します。
- フォームまたはデータモジュールに IBDatabaseInfo コンポーネントを配置して,Database プロパティにデータベースの名前を指定します。
- フォームに Memo コンポーネントを配置します。
- フォームに Timer コンポーネントを配置して,時間間隔を設定します。
- Timer の OnTimer イベントフィールドをダブルクリックして,次のコードを入力します。
Memo1.Text := IBDatabaseInfo.UserNames.Text; // Delphi の例 Memo1->Text = IBDatabaseInfo->UserNames->Text; // C++ の例
IBEvents
IBEvents.IBEvents コンポーネントを使用すると,InterBase サーバーによってホストされるイベントを登録したり,イベントを非同期に処理することができます。
IBEvents コンポーネントを設定するには,以下の手順にしたがいます。
- 上記の手順で IBDatabase 接続を確立します。
- フォームまたはデータモジュールに IBEvents コンポーネントを配置して,Database プロパティにデータベースの名前を指定します。
- Events プロパティの文字列リストエディタに,次のようなイベントを入力します。
IBEvents.Events.Add('EVENT_NAME'); // Delphi の例
IBEvents->Events->Add("EVENT_NAME"); // C++ の例
- 4. Registered プロパティを true に設定します。
InterBase 管理コンポーネント
InterBase 7.5 がインストールされている場合は,InterBase 管理コンポーネントを使用できます。これらのコンポーネントにより,強力な InterBase サービスの API 呼び出しを使用できます。
InterBase 管理コンポーネントは,IDE の[InterBase Admin]タブにあります。
メモ:これらの InterBase 管理コンポーネントを使用するには,InterBase 7.5 をインストールする必要があります。
IBConfigService
IBServices.TIBConfigService オブジェクトを使用すると,ページバッファ,非同期モード,予約領域,スイープ間隔などのデータベースパラメータを設定できます。
IBBackupService
IBServices.TIBBackupService オブジェクトを使用すると,データベースをバックアップできます。IBBackupService では,ブロッキング係数,バックアップファイル名,データベースバックアップオプションなどのパラメータを設定できます。
IBRestoreService
IBServices.TIBRestoreService オブジェクトを使用すると,データベースを復元できます。IBRestoreService では,ページバッファ,ページサイズ,データベース復元オプションなどのパラメータを指定できます。
IBValidationService
IBServices.TIBValidationService オブジェクトを使用すると,データベースを検証したり,データベーストランザクションを調整することができます。IBValidationService サービスでは,トランザクションのデフォルトアクションの設定,limbo トランザクション情報の取得,その他のデータベース検査オプションの設定ができます。
IBStatisticalService
IBServices.TIBStatisticalService オブジェクトを使用すると,データページ,データベースログ,ヘッダーページ,インデックスページ,システムリレーションなどのデータベースの統計情報を表示できます。
IBLogService
IBServices.TIBLogService オブジェクトを使用すると,ログファイルを作成できます。
IBSecurityService
IBServices.TIBSecurityService オブジェクトを使用すると,InterBase サーバーへのユーザーアクセスを管理できます。IBSecurityService では,ユーザーアカウントの作成,削除,変更,すべてのユーザーの表示,SQL ロールを使ったワークグループの設定を行うことができます。
IBLicensingService
IBServices.TIBLicensingService コンポーネントを使用すると,InterBase ソフトウェアライセンスを追加または削除できます。
IBServerProperties
IBServices.TIBServerProperties コンポーネントを使用すると,環境設定パラメータ,バージョン,ライセンス情報など,データベースサーバーの情報を取得できます。
IBInstall
IBInstall.TIBInstall コンポーネントを使用すると,インストール元とインストール先のディレクトリやインストールするコンポーネントの指定など,InterBase のインストールコンポーネントの設定を行うことができます。
IBUnInstall
IBInstall.TIBUnInstall を使用すると,アンインストールコンポーネントを設定できます。