はじめに
このラボでは、Delphi XE を使用して、サーバーとクライアントアプリケーションで構成されている簡単な多層データベースソリューションを作成します。
このラボの作業のために、ご自身で選択したデータベースを使用することができますが、この記事では、データベースサーバーとして Embarcadero InterBase XE の RDBMSを使用します。もし、InterBase XE をお持ちでないのであれば、以下のサイトより開発用の Developer Edition をダウンロードしてインストールすることが可能です。
https://downloads.embarcadero.com/free/interbase
ここでは、InterBase XE のサンプルの “EMPLOYEE” データベースを使用します。
最初に、Delphi のデータエクスプローラで、この “EMPLOYEE” データベースへの接続を設定する必要があります。
データエクスプローラでのデータベース接続の設定
データエクスプローラの “INTERBASE” ノード上で、マウスの右ボタンをクリックし、表示されたポップアップメニューより「新規接続を追加」を選択します。そして、それに “IBEMPLOYEE” と名づけます。

データベース接続の設定の為、データエクスプローラの新しく作成された “IBEMPLOYEE” ノード上でマウスの右ボタンをクリックし、表示されたポップアップメニューより「接続の変更」を選択します。
InterBase XE をデフォルトでインストールした場合、サンプルデータベース “EMPLOYEE” の位置は “C:\Embarcadero\InterBase\examples\database\employee.gdb” となります。デフォルトのユーザー名とパスワードは “sysdba”、および、“masterkey” です。

接続が正しく構成されたかを確認するために [テスト接続] のボタンをクリックします。

多層データベースシステムのサーバーおよびクライアントアプリケーションを構築する準備が整いました。
多層データベースソリューション用 DataSnap Server を作成する
最初のステップでは、“DataSnap Server” ウィザードを使用して、新規の DataSnap Server アプリケーションを作成します。
メインメニューで [ファイル|新規作成|その他] を選択し、表示された「新規作成」ダイアログで、[Delphi プロジェクト|DataSnap Server] カテゴリの DataSnap Server アイコンをダブルクリックします。


最初に「プロジェクトの種類」を選択します。ここではデフォルトの「VCLフォームアプリケーション」を選択し、次へ進みます。

次の画面は、全てデフォルトのままの選択とします。

3番目の画面は、TCP/IP ポートのデフォルトの値である 211 のままとします。[ポートのテスト] のボタンをクリックすると、ポート番号が使用可能かどうかをテストすることができます。

最後の画面では、サーバーメソッドのクラスの基底クラスとして “TDSServerModule” を選択します。
[完了] ボタンをクリックすると、ウィザードは、3つのユニットを持った新しいプロジェクトを生成します。
[ファイル|すべて保存]をクリックします。
例えば、“C:\DataSnapLabs\MultiTier\” のような新しいディレクトリを作成し、このラボのすべてのファイルを格納します。
メインのアプリケーションフォーム名は “FormServerUnit”として保存します。そして、他のユニットはデフォルトの名前である “ServerContainerUnit1”、“ServerMethodsUnit1” のままとします。そして、プロジェクト名を “MultiTierServer” として保存します。
このラボのような簡単な DataSnap サーバーのデータベース接続を実装するために、コーディングする必要はありません! ”ServerMethodsUnit1” へ、いくつかのコンポーネントを追加するだけです。
このラボでは、CUSTOMERS という EMPLOYEE データベース内の1つのデータベーステーブルへのアクセスを提供します。クライアントアプリケーションは、顧客情報の参照と、その更新を行うことができます。
次の手順の目標は、“ServerMethodsUnit1” のデザイン画面で、“TSQLConnection”, “TSQLDataSet”, “TDataSetProvider” コンポーネントを追加して結びつけることです。この目標を達成する最も簡単な方法は、データエクスプローラと、VCLフォームデザイナの統合を使用することです。データエクスプローラで、目的のテーブルを選択し、“ServerMethodsUnit1” にドラッグすると、初めの2つのコンポーネントが自動的に作成、設定されます。
TSQLConnection と TSQLDataSet コンポーネントが、サーバーメソッドユニットに自動的に追加されるばかりでなく、既にプロパティが命名され、設定されているのに注意してください。
最後の手順として、データモジュールに “TDataSetProvider” コンポーネントをドロップし、“DataSet” プロパティを “CUSTOMER” に設定します。例えば、“dspCustomer” のような何か意味のあるデータセットプロバイダ名をつけると良いでしょう。

デモのサーバーは、完全に実装されました。とても簡単に、一行のコードを書くことも無しに!
クライアントアプリケーションの開発の為にサーバーを動作させる必要があります。
[実行|デバッカを使わずに実行] でサーバープロジェクトを実行し、そのウィンドウを最小化しておきます。
このラボの作業が終了するまで、サーバーをシャットダウンしないで下さい
多層データベースソリューション用 DataSnap Client の作成
プロジェクトマネージャ内のプロジェクトグループを選択し、マウスの右ボタンをクリックします。表示されたポップアップメニューより「新規プロジェクトを追加」を選択します。

「新規作成」ダイアログの [Delphi プロジェクト] カテゴリの 「VCL フォームアプリケーション」を選択します。

[OK] ボタンをクリックして、プロジェクトグループに新しいプロジェクトを追加します。
メニューの [ファイル|すべて保存] でサーバープロジェクトと同じところに保存します。その際、クライアントアプリケーションのメインフォーム名を “FormClientUnit” とし、新しいプロジェクト名は “MultiTierClient” とします。また、プロジェクトグループ名は “MultiTierGrp” とします。
クライアントのフォームに “TSQLConnection” コンポーネントをドロップし、そしてその “Driver” プロパティに “DataSnap” を設定します。“LoginPrompt” プロパティは、プロンプトを表示しないよう “False” に設定します。
フォームに “TDSProviderConnection” コンポーネントをドロップし、ドロップダウンから “SQLConnection” プロパティの値として、すでにフォーム上にある “SQLConnection1” component コンポーネントを設定します。
“DSProviderConnection1.ServerClassName” プロパティの値として “TServerMethods1” を入力します。
フォームに “TClientDataSet” コンポーネントを追加します。
“RemoteServer” プロパティを “DSProviderConnection1” に設定します。.
ClientDataSet1 の “ProviderName” プロパティをドロップダウンし、表示されたリストより “dspCUSTOMER” を選択します。
フォームに “TDataSource” コンポーネントを追加し、“DataSet” プロパティを “ClientDataSet1” に設定します。.
フォームに “TDBGrid” コンポーネントを追加し、“DataSource” プロパティを “DataSource1” に設定します。.
フォームに “TDBNavigator” コンポーネントを追加し、“DataSource” プロパティを“DataSource1” に設定します。.
フォームに “TCheckBox” コンポーネントを追加し、“Caption” プロパティの値を “Active” に変更します。
“CheckBox1” コンポーネントをダブルクリックし、“OnClick”イベントに以下のコードを記載します:
procedure TForm3.CheckBox1Click(Sender: TObject);
begin
ClientDataSet1.Active := CheckBox1.Checked;
end;
フォームに “TButton” コンポーネントを追加します。ダブルクリックし、“OnClick” イベントに以下のコードを記載します:
procedure TForm3.Button1Click(Sender: TObject);
begin
ClientDataSet1.ApplyUpdates(-1);
end;
この段階で、クライアントのフォームは、このようになります:

クライアントの動作をご覧下さい!
アプリケーションを実行し、“Active” チェックボックスをクリックすると、グリッド内に顧客情報が表示されます!
顧客データをいくつか変更し、ClientDataSet1 データのインメモリへ変更をポストするためにナビゲータコンポーネント内の [Post] ボタンをクリックします。そして、サーバーへ変更を送信するために [Apply Update] ボタンをクリックします。
クライアントアプリケーションの再実行により、変更がデータベースに格納されていることを確認することができます。
ほんの少しビジュアルコンポーネントを再構成するだけで、最終的にクライアントアプリケーションは、このようになります。

これだけ!
ウィザードといくつかのコンポーネントとたったの2行のコードで、Delphi 多層 DataSnap データベースソリューションを作成することができました。
これが “RAD(Rapid Application Development – 迅速なアプリケーション開発)” です。
まとめ
Connect with Us