本ブログでは、Delphi / C++Builderをある程度使用したことのある方をを対象として、FireDACの基本的な利用方法を解説していきます。
第2回のテーマ
- FireDACファーストインプレッション
- FireDACのコンポーネント
- FireDACによる初めてのアプリケーション作成
Table of Contents
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による初めてのアプリケーション作成
最初のセクションでは、データエクスプローラを利用して、あっという間にデータの表示まで行うことができました。ただ、実際にデータを表示するためには、データベースへの接続設定、ドライバリンクの選択、テーブルの結果セットの取得など、裏側では色々な設定が行われていました。
このセクションでは、こうした一連手順を理解するために、データエクスプローラの助けを借りず、ひとつひとつの手順を追って実際に簡単なアプリケーションの作成してみましょう。
- データベースへの接続のセットアップと、その接続の確立
- 実行に必要なFireDACのコンポーネントの配置
- データセットをグリッドコントロールと結び付ける
- アプリケーションを実行し、データを表示
今回は、接続するデータベースとして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からデータベースへ接続するためには、最低1個以上、TFDConnectionコンポーネントの配置が必要です。 |
をそれぞれフォーム上の任意の位置へ配置します。
TFDPhysXXXDriverLinkは、接続するデータベースごとに必要です。 例えば、InterBaseへ接続する場合は、TFDPhysIBDriverLinkを使用します(Delphi/C++Builder XE6以降は、TFDPhysXXXDriverLinkの配置は必須ではなく、任意)。
但し、独自のライブラリファイルを指定する必要がある場合は、VenderHome、VenderLibプロパティの設定を明示的に行う必要があるため、今まで通り、TFDPhysXXXXDriverLinkの配置が必要です。 |
このブログでは、明示的にTFDPhysIBDriverLinkを配置することにします。
(5)フォーム上にその他のコンポーネントを配置する
をフォーム上の任意の位置へ配置します。 (下図は、配置例)
(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を選択し、オブジェクトインスペクタの画面から以下のプロパティを変更します。
プロパティ名 | 値 |
LoginPrompt | False |
FDConnection1.LoginPromptプロパティをTrueの場合、アプリケーション起動時に毎回、データベースへの接続画面が表示されますので、ここではFalseに変更します。
(9)データセットをグリッドコントロールと紐付ける
オブジェクトインスペクタの画面から各コンポーネントの以下のプロパティを変更します。
プロパティ名 | 値 |
DataSet | FDTable1 |
プロパティ名 | 値 |
DataSource | DataSource1 |
TDataSourceコンポーネントは、FireDACのデータセット(FDTable1)とフォーム上のグリッドコントロール(DBGrid1)を結びつける役割を持っています。 |
(10)表示するテーブルを選択する
オブジェクトインスペクタの画面から以下のプロパティを変更します。
プロパティ名 | 値 |
Connection | FDConnection1 |
TableName | EMPLOYEE |
オブジェクトインスペクタのTableNameプロパティをクリックすると、テーブルの一覧が表示されますので、そのリストの中から選択できます。
TableNameプロパティで”EMPLOYEE”を選択したら、最後にオブジェクトインスペクタの画面から以下のプロパティを変更します。
プロパティ名 | 値 |
Active | True |
TFDTable.ActiveプロパティをTrueに設定すると、データセットを開いてグリッドコントロールにデータが表示されます。 |
(11)プロジェクトを保存する
メニューの[ファイル]-[すべて保存] を選択し、全てのファイルを保存してください。
(12)アプリケーションを実行する
ツールバー(上図)の実行ボタン、または、キーボードの[F9]ボタンを押します。
(13)データを表示する
アプリケーションを実行すると、既にTFDTable.Active=Trueなため、TDBGridコンポーネントにInterBaseのEMPLOYEEテーブルのデータが表示されます。
以上でFireDACからデータベース(InterBase)へ接続し、データを表示する手順の終了です。
いかがでしたでしょうか。設定すべきプロパティさえ覚えてしまえば、簡単にデータベースへ接続するアプリケーションを作成できるようになりますね。
実際のアプリケーション開発では、ビジネスロジックに応じてコードを実装する必要があるので、もう少し複雑です。とはいえ、FireDACの一連のコンポーネントには、さまざまなプロパティ、イベント、メソッドが用意されています。その中でも、データ取得の役割を担うデータセットは重要な役割を担います。
次回は、この重要なFireDACのデータセットの概要を説明するとともに、具体的な実装コード例も交えてFireDACによるデータ更新の方法について解説していきます。