データベース開発を紹介する前に新バージョンのお知らせ
この記事を執筆している時点でちょうどDelphi for PHPの新バージョン「Delphi for PHP 2.0」が発表されました。以前も書きましたが、残念ながらバージョン1.0は英語版のみでした。しかし、バージョン2.0では、日本語を含むマルチランゲージのユーザーインターフェースをサポートするようになりました。やはり日本語のユーザーインターフェースだと直感的に使えますから、使い勝手は格段によくなります。
ここでは、2.0の新機能を紹介しておきましょう。
これまでの記事
ビジュアルデザイナ
ビジュアルデザイナには、従来のPHPデザイナに、HTMLデザイナとテンプレートデザイナが加わりました。PHPフォームにコンポーネントをドラッグ&ドロップできるだけでなく、HTMLにボタンやテキストボックスなどのHTML要素をドラッグ&ドロップしたり、HTMLテンプレートにPHPコンポーネントをドラッグ&ドロップできるようになりました。
テンプレートフォームを使うと、HTML部分をHTMLデザイナに任せて、PHP部分のみをDelphi for PHP 2.0で開発するような分業も可能になります。
コードエディタ
コード入力時の支援機能も強化されています。Error Insightは、入力中のコードの構文エラーを自動検出して表示する機能です。コンパイルという作業のないダイナミック言語の場合、スペルミスの発見は時として困難なので、この機能は重宝します。
このほかに、同期編集やコード折りたたみなど、コードの修正やナビゲートを容易にする機能が追加されています。
新しいコンポーネント
Zendフレームワークをカプセル化してビジュアル開発を可能にしたコンポーネントやOracleネイティブコンポーネントなどが追加されています。また、任意のPHPフレームワークやライブラリなどをカプセル化できるので、Delphi for PHPのビジュアル開発のメリットを、PHPオープンソース資産全般に広げることができます。
データベース開発機能
今回紹介するデータベース機能は、1.0のものですが、これに加えて、新しいデータベース開発機能が2.0には搭載されています。まず、サポートデータベースが大幅に拡張されています。データエクスプローラは、データベースサーバ固有のスキーマオブジェクトを扱うことができますが、従来のInterBaseとMySQLに加えて、新たにDB2、Oracle、Informix、Microsoft SQL Server、Sybase、SQL Anywhere、PostgreSQLに対応しました。これらのデータベースアプリケーションは、ドラッグ&ドロップで、ほとんどコーディングすることなく基本機能を開発できます。
Delphi for PHP 2.0の製品情報は、http://www.codegear.com/jp/products/delphi/phpをご覧ください。Delphi for PHP 2.0の新機能の詳細については、CDNに掲載された記事「Delphi for PHP 2.0の新機能」を参照してください。
Delphi for PHPのデータベースアクセス 1
では、本編に戻り、Delphi for PHPのデータベース開発機能について紹介しましょう。
Delphi for PHPのコンポーネントフレームワークVCL for PHPには、データベースアクセスをサポートするコンポーネントが揃っています。これらのコンポーネントを使えば、ドラッグ&ドロップの操作で、基本的なデータベースアクセス機能を実装できます。
まずは「習うより慣れろ」で、データベース接続を実践してみましょう。ここでは、Delphi for PHPに付属しているInterBase Developer Editionを使います。InterBaseは、軽量RDBMSで、PHPによるWebアプリケーション用には最適なデータベースです。
InterBaseが起動している状態で、以下の操作を行います。
Data Explorerの設定
Delphi for PHPのIDEの右側に表示されている「Project Manager」ペインの下にあるタブ[Data Explorer]をクリックして、データエクスプローラ(Data Explorer)を表示します(図2)。
ここで、接続するデータベース、この場合は、InterBaseを選択してマウスの右ボタンをクリックし、[Register Database]メニューを選択します。表示されたダイアログボックスに以下のように入力します。
項目 | 値 |
Database type | InterBase |
Connection Name | myinterbase(識別しやすい任意の名前) |
Host | Localhost |
Database Name | (データベースファイルを指定します。例えば、InterBaseをインストールしたディレクトリ下の、examples\database\employee.gdb) |
Username | (ユーザー名) |
Password | (パスワード) |
入力が終わったら[OK]ボタンをクリックして、設定内容を保存します。すると、Data Explorerの[InterBase]項目下に、作成したmyinterbaseが表示されます。項目を開いていくと、myinterbaseで指定したデータベースのテーブル一覧が表示されます。
ドラッグ&ドロップでデータベースアプリケーションを作る
ここまで設定ができてしまえば、基本的なデータベースアプリケーションを作成する手順は大変シンプルです。[File|New|Application]で新規アプリケーションを作成したら、Data Explorerで表示したいテーブルを選択してマウスをドラッグし、フォーム上にドロップします。
すると、フォーム上には、データベースにアクセスするためのコンポーネント、グリッドなどが配置されます。
必要なプロパティは既に設定されているので、プログラムを実行するだけで、データを表示できます。
コンポーネントの解説
自動的に配置されたコンポーネントについて、簡単に解説しましょう。
Database
データベース接続を担当するコンポーネント。Data Explorerで指定した接続設定が、各プロパティに指定されます。
Table
データベーステーブルを扱うコンポーネント。Databaseプロパティに接続するデータベースへの接続設定を行ったDatabaseコンポーネントを指定します。TableNameプロパティに扱うテーブルの名前を指定します。
同じようなコンポーネントにQueryコンポーネントがありますが、こちらは、テーブルではなくクエリーをSQLプロパティに指定します。
Datasource
TableやQueryといったデータセットをグリッドやエディットといったデータ表示/編集用のコンポーネントと結び付けます。DataSetプロパティに、TableやQueryコンポーネントを指定します。
多くのコントロールには、Datasourceプロパティがあり、この値によって、Datasourceコンポーネントとの関連を定義します。
DBGrid
データを表形式で表示するコントロールです。AJAXを活用して、すばやいレスポンスでデータを表示・編集できます。Datasourceプロパティに指定したDatasourceコンポーネントに結び付けられたデータセットを表示します。
Delphi for PHPのデータベースアクセス 2
Editを使ってデータ表示
今度は、グリッドを使わずに1ページに1件のデータを表示するようなフォームを作成してみましょう。データの表示や編集には、LabelやEditを利用できます。これらのコンポーネントには、DatasourceプロパティとDataFieldプロパティがあり、この2つ値を設定することで、データを表示・編集できるようになります。
また、レコードの移動を行うリンクを追加するには、Paginatorコンポーネントを使います。このコンポーネントを用いれば、ノンコーディングでレコード移動を行うページング機能を実装できます。
では、[File|New|Application]で新規アプリケーションを作成します。新規フォームが表示されたら、データエクスプローラに移動します。
データエクスプローラのツールバーには、4つのボタンがあります。このボタンは、データエクスプローラからフォームに項目をドラッグ&ドロップしたときに作成するコントロールを指定するオプションです。
ボタン | 説明 |
|
テーブル項目をドロップしたときに、そのテーブルのデータを表示するDBGridを配置します。 |
|
テーブル項目をドロップしたときに、そのテーブルのデータを表示するDBRepeaterを配置します。DBRepeaterは、特殊なパネルで、この上に配置したDatasourceに関連付けられたコントロールにデータを表示し、複数レコード分繰り返して表示します。フォームに1つのDBRepeaterを配置すると、実行時には複数レコード分のDBRepeaterパネルが表示されます。 |
|
フィールドをドロップしたときに、そのフィールドのデータを表示するLabelを配置します。 |
|
フィールドをドロップしたときに、そのフィールドのデータを表示するEditを配置します。フィールドは編集できます。 |
ここでは、Editをクリックします。
InterBaseのサンプルデータベースから[CUSTOMER]テーブルを選択します。ツリーを開いて、[CUST_NO]を選択します。
選択した、[CUST_NO]項目をフォームにドロップします。すると、Database、Table、DatasourceとCUST_NOのデータを表示するように設定されたEditが配置されます。
LabelとEditを使って、CUSTOMERテーブルのいくつかの項目を表示するようにしてみましょう。図10のようにコンポーネントを配置します。
配置したコンポーネントのプロパティは、それぞれ次のように設定しています。
プロパティ | 値 |
Caption | 顧客番号 |
プロパティ | 値 |
Caption | 顧客名 |
プロパティ | 値 |
Caption | 電話番号 |
プロパティ | 値 |
Caption | 住所 |
プロパティ | 値 |
DataField | CUSTOMER |
DataSource | dsCUSTOMER1 |
Text | CUSTOMER |
プロパティ | 値 |
DataField | PHONE_NO |
DataSource | dsCUSTOMER1 |
Text | PHONE_NO |
プロパティ | 値 |
DataField | ADDRESS_LINE1 |
DataSource | dsCUSTOMER1 |
Text | ADDRESS_LINE1 |
プロパティ | 値 |
DataField | ADDRESS_LINE2 |
DataSource | dsCUSTOMER1 |
Text | ADDRESS_LINE2 |
ページング機能を使う
次に、ツールパレットの[Data Control]カテゴリから、DBPaginatorをフォームに配置します。このコンポーネントは、指定したDatasourceのページング機能を提供します。例えば、ここでDatasourceにdsCUSTOMER1を指定すると、配置したEditに表示されるレコードは、DBPaginatorで選んだレコードになります。
プロパティ | 値 |
CaptionFirst | 最初へ |
CaptionLast | 最後へ |
CaptionNext | 次へ |
CaptionPrevious | 前へ |
DataSource | dsCUSTOMER1 |
では、アプリケーションを実行してみましょう。最初のレコードのデータがフォームに表示されます。[次へ]をクリックすると、次のレコードが表示されます。
おわりに
3回にわたってDelphi for PHPによるPHP開発を紹介してきました。もうまもなく、新バージョンのDelphi for PHP 2.0のトライアル版も入手できるようになるでしょう。Delphi for PHPは、PHP開発に新しいビジュアル手法を取り入れた画期的なツールで、一度使ってみると「面白い!」と実感できます。ぜひお試しください。