サイトアイコン Embarcadero RAD Studio, Delphi, & C++Builder Blogs

基礎から学べるFireDACデータアクセス再入門(第2回)

本ブログでは、Delphi / C++Builderをある程度使用したことのある方をを対象として、FireDACの基本的な利用方法を解説していきます。

第2回のテーマ

  • FireDACファーストインプレッション
  • FireDACのコンポーネント
  • FireDACによる初めてのアプリケーション作成

FireDACファーストインプレッション

前回、Delphi / C++Builderにおけるデータベースアクセスと、その中でFireDACがなぜ優れているのかについて、簡単に説明しました。FireDACを使用すれば、簡単かつ迅速にデータベースへアクセス機能を実装できるのです。

百聞は一見に如かずです。まずは、実際に見てみましょう。

新規プロジェクトを作成し、[データエクスプローラ]からEMPLOYEEテーブルをフォーム上にドラッグ&ドロップします。

フォーム上にグリッドコントロールを配置し、プロパティを変更すると、

ほら、この通り。たったこれだけで、データが表示されるのです。この手法は、ご覧いただいたWindows向けのクライアントアプリケーションだけでなく、マルチデバイスアプリやサーバーサイドのWeb APIなどを開発する際にも活かすことができます。

では、少し詳しくFireDACについて解説していきましょう。

FireDACのコンポーネント

FireDAC には、約 60 個以上の非表示コンポーネントが用意されています。以下は、FireDACの主要なコンポーネントの一例です。

FireDACのコアコンポーネント

 

コンポーネント名 説明
TFDConnection データベースとの接続を管理するクラス。FireDACからデータベースへ接続するためには、最低1個以上、このコンポーネントの配置が必要です。
TFDQuery SQL文の実行および結果セット(複数可)の取得を行うためのデータセットクラス
TFDTable 単一のデータベース テーブルを扱うデータセットクラス
TFDTransaction 接続に対するトランザクションを管理するクラス
TFDMemTable インメモリのデータセットクラス
TFDStoredProc サーバー側のストアド プロシージャを実行できるデータセットクラス

 

上記のうちデータセットクラスは次回のブログで、もう少し詳しく解説いたします

 

 

FireDACのドライバリンクコンポーネント

FireDACのドライバ リンク コンポーネントは、サポートするデータベースごとに用意されており、RDBMSベンダーが提供するクライアントドライバとアプリケーションとのリンク、仲介を行うことが目的としています。

※各RDBMSのクライアントドライバのセットアップは、別途必要です。

コンポーネント名 説明
TFDPhysOracleDriverLink Oracleデータベースへ接続するために必要なドライバリンククラス
TFDPhysMSSQLDriverLink Microsoft SQL Server へ接続するために必要なドライバリンククラス
TFDPhysMySQLDriverLink MySQL Server へ接続するために必要なドライバリンククラス
TFDPhysPgDriverLink PostgreSQLへ接続するために必要なドライバリンククラス
TFDPhysSQLiteDriverLink SQLiteへ接続するために必要なドライバリンククラス
TFDPhysIBDriverLink InterBaseへ接続するために必要なドライバリンククラス
TFDPhysFBDriverLink FireBirdへ接続するために必要なドライバリンククラス
TFDPhysODBCDriverLink ODBC接続ドライバを利用するために必要なドライバリンククラス
FireDACのドライバリンククラスは、上記のようにTFDPhys>XXXDriverLinkのXXX部分には対応したデータベース名が入ります。

FireDACの構造を示す図は、以下の通りです。

FireDACによる初めてのアプリケーション作成

最初のセクションでは、データエクスプローラを利用して、あっという間にデータの表示まで行うことができました。ただ、実際にデータを表示するためには、データベースへの接続設定、ドライバリンクの選択、テーブルの結果セットの取得など、裏側では色々な設定が行われていました。

このセクションでは、こうした一連手順を理解するために、データエクスプローラの助けを借りず、ひとつひとつの手順を追って実際に簡単なアプリケーションの作成してみましょう。

  1. データベースへの接続のセットアップと、その接続の確立
  2. 実行に必要なFireDACのコンポーネントの配置
  3. データセットをグリッドコントロールと結び付ける
  4. アプリケーションを実行し、データを表示

今回は、接続するデータベースとしてInterBase 2020を使用します。

(1)VCLフォームアプリケーションのプロジェクト作成

Delphi/C++Builderのメニューから[ファイル]-[新規作成]-[Windows VCLフォームアプリケーション]を選択します。

 

(2)プロジェクトを保存する

メニューの[ファイル]-[すべて保存] を選択し、全てのファイルを保存してください。プロジェクトは、任意のフォルダに保存することができます。

(3)InterBaseサーバーを起動する

Windowsスタートメニューの”Embarcadero InterBase 2020 [instance=gds_db]”-”InterBase サーバーマネージャー”を選択し、サーバーマネージャーを起動してください。

InterBase サーバーマネージャー画面の[起動]ボタンを押してInterBaseのプロセスを開始します。

サーバーの状態が”動作中”であることを確認してください。

(4)フォーム上にFireDACのコンポーネントを配置する

ツールパレットの[FireDAC]カテゴリから
・TFDConnection
・TFDTable
 
FireDACからデータベースへ接続するためには、最低1個以上、TFDConnectionコンポーネントの配置が必要です。
ツールパレットの[FireDAC Links]カテゴリから
・TFDPhysIBDriverLink

 をそれぞれフォーム上の任意の位置へ配置します。

TFDPhysXXXDriverLinkは、接続するデータベースごとに必要です。 例えば、InterBaseへ接続する場合は、TFDPhysIBDriverLinkを使用します(Delphi/C++Builder XE6以降は、TFDPhysXXXDriverLinkの配置は必須ではなく、任意)。

 

但し、独自のライブラリファイルを指定する必要がある場合は、VenderHome、VenderLibプロパティの設定を明示的に行う必要があるため、今まで通り、TFDPhysXXXXDriverLinkの配置が必要です。

このブログでは、明示的にTFDPhysIBDriverLinkを配置することにします。

(5)フォーム上にその他のコンポーネントを配置する

ツールパレットの[Data Access]カテゴリから
・TDataSource
ツールパレットの[Data Controls]カテゴリから
・TDBGrid

をフォーム上の任意の位置へ配置します。 (下図は、配置例)

(6)FireDAC接続エディタの表示

フォーム上のFDConnection1を選択し、マウスを右クリックするとポップアップメニューが表示されるので、そのメニューから[接続エディタ]を選択すると、FireDAC 接続エディタが表示されます。

(7)TFDConnectionの接続パラメータの設定

FireDAC接続エディタのドライバIDのリストから”IB”を選択します。

ドライバIDを選択すると、データベースの設定に必要なパラメータリストが表示されます。

FireDAC接続エディタ(上図)の空欄箇所を以下のパラメータのように変更してください。

パラメータ名
ドライバID IB
Database C:ProgramDataEmbarcaderoInterBasegds_dbexamplesdatabaseemployee.gdb
User_Name SYSDBA
Password masterkey

(8)データベースへの接続をテストする

データベースへ接続に必要なパラメータを設定後、FireDAC接続エディタの[テスト]ボタンを押してください。

テストボタンを押すと、データベースへのログイン画面が表示されます。

[OK]ボタンを押してください。

“接続の確立が成功しました。”

というダイアログメッセージが表示されれば、データベースへの接続は、正常に完了です。

データベースへの接続が確認できたら、フォーム上のFDConnection1を選択し、オブジェクトインスペクタの画面から以下のプロパティを変更します。

FDConnection1
プロパティ名
LoginPrompt False

FDConnection1.LoginPromptプロパティをTrueの場合、アプリケーション起動時に毎回、データベースへの接続画面が表示されますので、ここではFalseに変更します。

(9)データセットをグリッドコントロールと紐付ける

オブジェクトインスペクタの画面から各コンポーネントの以下のプロパティを変更します。

DataSource1
プロパティ名
DataSet FDTable1
DBGrid1
プロパティ名
DataSource DataSource1
TDataSourceコンポーネントは、FireDACのデータセット(FDTable1)とフォーム上のグリッドコントロール(DBGrid1)を結びつける役割を持っています。

(10)表示するテーブルを選択する

オブジェクトインスペクタの画面から以下のプロパティを変更します。

FDTable1
プロパティ名
Connection FDConnection1
TableName EMPLOYEE

オブジェクトインスペクタのTableNameプロパティをクリックすると、テーブルの一覧が表示されますので、そのリストの中から選択できます。

TableNameプロパティで”EMPLOYEE”を選択したら、最後にオブジェクトインスペクタの画面から以下のプロパティを変更します。

FDTable1
プロパティ名
Active True
TFDTable.ActiveプロパティをTrueに設定すると、データセットを開いてグリッドコントロールにデータが表示されます。

(11)プロジェクトを保存する

メニューの[ファイル]-[すべて保存] を選択し、全てのファイルを保存してください。

(12)アプリケーションを実行する

ツールバー(上図)の実行ボタン、または、キーボードの[F9]ボタンを押します。

(13)データを表示する

アプリケーションを実行すると、既にTFDTable.Active=Trueなため、TDBGridコンポーネントにInterBaseのEMPLOYEEテーブルのデータが表示されます。

以上でFireDACからデータベース(InterBase)へ接続し、データを表示する手順の終了です。

いかがでしたでしょうか。設定すべきプロパティさえ覚えてしまえば、簡単にデータベースへ接続するアプリケーションを作成できるようになりますね。

実際のアプリケーション開発では、ビジネスロジックに応じてコードを実装する必要があるので、もう少し複雑です。とはいえ、FireDACの一連のコンポーネントには、さまざまなプロパティ、イベント、メソッドが用意されています。その中でも、データ取得の役割を担うデータセットは重要な役割を担います。

次回は、この重要なFireDACのデータセットの概要を説明するとともに、具体的な実装コード例も交えてFireDACによるデータ更新の方法について解説していきます。

 

基礎から学べるFireDACデータアクセス再入門

データベースアクセスは、Delphi / C++Builderが得意とする分野です。最新のDelphi / C++Builderでは、FireDACと呼ばれる共通データベースアクセスコンポーネントを使って、多様なデータソースへのアクセスをサポートしています。

そこで本連載では、FireDACの基本的な概念の理解から使い方、さらには応用方法までを学習できる記事を提供。Delphi / C++Builderでの開発経験はあるけれど、FireDACについては詳しくない。あるいは、今回データベースアプリケーションを構築するのに、どのような技術があるのかを知りたい。こんな悩みを抱えている方に最適なシリーズです。

バックナンバーはこちら

モバイルバージョンを終了