BDE から FireDAC への移行 - Paradox から InterBase の場合

By: Chikako Yonezawa

Abstract: この記事では、Paradox ファイルに BDE を介して接続しているアプリケーションを、FireDAC コンポーネントで、InterBase の同じ構造のテーブルに接続するよう置き換える手順について説明します。

    はじめに

BDE(Borland Databse Engine)は、初期のバージョンの Delphi / C++Builderで、データベースアクセス用のエンジンとして、広く利用されてきました。しかし、古いデスクトップデータベースアーキテクチャを利用していること、動作環境としては Windows 2000 までしかサポートしていないことなどから、新しいデータベースアクセスアーキテクチャへの移行が推奨されていました。

今回リリースされた FireDAC コンポーネントは、従来の BDE データセットと高い互換性を備えています。これまで、dbExpress などへの移行では、より多くの移行作業を必要としていましたが、FireDAC を用いれば、比較的少ない工数で、データベースアクセス部分の移行が可能になります。

この記事では、典型的なデスクトップデータベースアプリケーションの例として、Paradox ファイルに BDE を介して接続しているアプリケーションを、FireDAC コンポーネントで、InterBase の同じ構造のテーブルに接続するよう置き換える手順について説明します。

InterBase には、デスクトップデータベースとして利用する InterBase Desktop Edition や、インプロセスデータベースとして動作する InterBase ToGo Edition が用意されており、これらのデスクトップデータベースの移行先としては最適です。

注: FireDAC コンポーネントから dBASE、および Paradox のファイルに ODBC 経由で接続することは可能ですが、内蔵されているこれらのデータベースに対応する ODBC ドライバは、画像データフィールドにアクセスできない、BDE 本体が必要となる等の制限がありますため

等を参考に InterBase 等のデータベースへ移行することをお勧めします。

    移行するアプリケーション

今回例として移行するアプリケーションは、以下のとおりです。

  • 使用しているデータベースは Delphi 付属のサンプルデータベースです。
  • Windows 7 の場合、デフォルトで C:\Users\Public\Documents\RAD Studio\10.0\Samples\Data 以下にインストールされています。
  • Paradox ファイルは biolife.db を InterBase は dbdemos.gdb 内の biolife テーブルを使用しています。
  • 予め InterBase のテーブルとして Paradox ファイルが移行されていることを前提としています。
    Hide image

FireDAC では、BDE のデータセットである TTable TQuery に相当するコンポーネントとして、TADTableTADQuery があります。これらのコンポーネントへの切り替えと、データベースへの接続を管理する TADConnection の追加が主な作業になります。

以下が移行作業の詳細です。

    移行作業

BDE の場合、TQuery 上で Database プロパティと接続するデータベースファイル (.db)を SQL 文で指定すると、目的のデータベースファイルに接続できました。

これを、まず FireDACコンポーネントに置き換えます。

元となるアプリケーションの作成は、記事の最後の方で説明していますのでそちらをご覧ください。

※今回のアプリケーションはデータモジュール上に TQueryと TDataSourceを配置しています。

Hide image
Click to see full-sized image

  1. まず、データモジュール上に、ツールパレットの FireDAC カテゴリの TADConnection と TADQuery を配置します。
    Hide image
  2. デザイナ上で ADConnection1 を選択し、オブジェクトインスペクタ上の Connection Editor の部分をクリックします。
    Hide image
  3. FireDAC の Connection Editor が開きます。
  4. Definition タブ上をクリックし、Driver ID は、IB(InterBase) を選択します。選択すると関連するパラメータが下に展開されます。
    Hide image
    Click to see full-sized image
  5. 展開されたパラメータの各項目を次のように設定します。
    パラメータ
    Database C:\Users\Public\Documents\RAD Studio\10.0\Samples\Data\dbdemos.gdb
    User_Name sysdba
    Password masterkey
    Server localhost

    Hide image
    Click to see full-sized image
  6. 設定が完了したら [Test]ボタンを押して、接続できるかどうか確認します。ログイン用の画面が現れますので [OK] ボタンを押します。
    Hide image
  7. 正しく接続された表示が出ましたら [OK] ボタンを押します。ここで接続ができない場合は、ファイル名やパラメータ等を確認してください。
    Hide image
  8. [OK] ボタンを押して Connection Editor を閉じます。
  9. ADConnection1 の Connected プロパティを True にします。ログイン画面が表示されますので [OK] ボタンを押し、データベースに接続します。
    Hide image
  10. デザイナ上で ADQuery1 を選択し、オブジェクトインスペクタ上の Query Editor の部分をクリックします。
    Hide image
  11. FireDAC の Query Editor が開きます。
    Hide image
    Click to see full-sized image
  12. SQL Command タブをクリックし、Select * from biolife と入力し、[Execute] ボタンを押します。
    Hide image
    Click to see full-sized image
  13. 正しくテーブルに接続されると、結果が下の RecordSet の部分に表示されます。正しく表示されたことを確認し [OK] ボタンを押して Query Editor を閉じます。
    Hide image
    Click to see full-sized image
  14. ADQuery1 の Active プロパティを True にします。
  15. DataSource1 の DataSet プロパティを Query1 から ADQuery1 に切り替えます。
    Hide image
  16. Query1 コンポーネントを削除します。
    Hide image

以上で基本的な置き換え作業は終了です。 Unit1 を見ると、接続するデータベースが変わりましたが、今までと同じようにデータが表示されています。
作業イメージは、次の図のようになります。
Hide image
Click to see full-sized image
では、実際に実行して動作を確かめましょう。その前に、実行に必要な TADPhysIBDriverLink と TADGUIxWaitCursor の 2 つのコンポーネントを DataModule2 上に追加します。

  • TADPhysIBDriverLink は InterBase のドライバをリンクするために必要なコンポーネントです。
  • TADGUIxWaitCursor はカーソルの制御に必要なコンポーネントです。

デフォルトの設定を使うのであれば、コンポーネントを配置するだけとなります。
[F9] ボタンを押し、アプリケーションを実行すると、今までと同じようにデータが表示され、行カーソルが移動することを確認できます。

Hide image

    元となるアプリケーション

なお、この記事で、元の Paradoxを使用したアプリケーションは以下の手順で作成しています。

  1. [ファイル|新規作成|VCLフォームアプリケーション - Delphi]を選択し、フォームを作成します。
  2. [ファイル|新規作成|その他 ]で新規作成ウィザードを表示し、[Delphiプロジェクト\Delphiファイル\データモジュール] を選択し、データモジュールを作成します。
  3. Unit1をアクティブにして、[ファイル|使用するユニット]を選択し、Unit2を選択して [OK] ボタンを押し、Form1 にデータモジュールを関連付けます。
  4. Form1(Unit1)上に TDBGrid, TDBNavigator, TDBMemo, TDBImage を配置します。
  5. DataModule2(Unit2)上に TQuery, TDataSource を配置します。
  6. Query1 の DatabaseName プロパティは DBDEMOS を選択します。
  7. Query1 の SQL プロパティには Select * from biolife.db と記述します。
  8. Query1 の Active プロパティを True にします。
  9. DataSource1 の DataSet プロパティに Query1 を指定します。
  10. DBNavigator1 の DataSource プロパティに、DataModule2.DataSource1 を指定します。
  11. DBGrid1 の DataSource プロパティに、DataModule2.DataSource1 を指定します。
  12. DBMemo1 の DataSource プロパティに、DataModule2.DataSource1 を指定します。
  13. DBMemo1 の DataField プロパティに Notes を指定します。
  14. DBImage1 の DataSource プロパティに、DataModule2.DataSource1 を指定します。
  15. DBImage1 の DataField プロパティに Graphic を指定します。

Hide image
Click to see full-sized image

Server Response from: ETNASC04