モバイル チュートリアル:モバイル クライアントからエンタープライズ データベースに接続する(iOS および Android)
モバイル チュートリアル:モバイル アプリケーション開発(iOS および Android) への移動
このチュートリアルを開始する前に:
- 次のチュートリアルを読んで実行してください。
- [スタート|プログラム|Embarcadero InterBase 2020|<xx>-bit instance = gd_db | InterBase Server Manager]を選択して、InterBase サーバーが稼働していることを確認します。例を作成して実行するには、InterBase サーバーが稼働している必要があります。
目次
このチュートリアルでは、モバイル クライアント アプリケーションからエンタープライズ データベースに接続する方法を説明します。
エンタープライズ データベースに接続するには、クライアント ライブラリが必要です。クライアント ライブラリは、たいてい、データベース ベンダから DLL 形式で提供されています。しかし、モバイル デバイスの場合はクライアント ライブラリが提供されていないため、この方法は使用できません。この問題を解決するには、エンタープライズ データベースに接続するための中間層を開発して、アプリケーションがその中間層と通信できるようにします。
RAD Studio では、ほとんどコーディングしないで中間層を開発できるよう(そして中間層にアクセスできるよう)、DataSnap フレームワークを提供しています。このチュートリアルでは、中間層を開発し、その後、モバイル クライアントを開発する手順を説明します。
中間層(DataSnap サーバー)の作成
まず、データベース サーバーのテーブルを公開する DataSnap サーバーを作成します。このチュートリアルでは DataSnap Server VCL フォーム アプリケーションを DataSnap サーバーとして使用します。
メモ: このチュートリアルの DataSnap サーバー(VCL アプリケーション)は、多層データベース アプリケーションの中間層として機能します。 DataSnap サーバーのインスタンスを作成して後で削除することは簡単にできます。基本の手順を理解した後で、中間層を Windows サービス アプリケーションに変換することができます。
DataSnap Server VCL アプリケーションを作成する
- 新しい Delphi プロジェクトまたは C++ プロジェクトを作成するには、[ファイル|新規作成|その他...]を選択し、[新規作成]ダイアログで以下を選択します。
- Delphi の場合: [Delphi プロジェクト|DataSnap Server|DataSnap Server]
- C++ の場合: [C++Builder プロジェクト|DataSnap Server|DataSnap Server]
- [DataSnap サーバーの新規作成]ウィザードが開きます。
- 最初のステップで、プロジェクトの種類に[フォーム アプリケーション]を選択します。
- 2 番目のステップで、アプリケーションの種類に[VCL アプリケーション]を選択します。
- 3 番目のステップで、[サーバーの機能]の一覧から、[TCP/IP]プロトコルと、[サーバー メソッド クラス]および[サンプル メソッド]を選択します。
- 4 番目のステップでは、TCP/IP 通信ポートをデフォルトの 211 のままにします。こうしておくと、クライアントとサーバーの間の通信が、デフォルトの DataSnap ポートを通じて行われます。
- 最後の(5 番目の)ステップで、[サーバー メソッド クラスの上位クラス]に[TDSServerModule]を選択します。
- フォーム ユニットを「DataSnapServerUnit」という名前で保存します。
- DataSnapServerUnit に移動し、フォームの Name プロパティを「DSServerForm」に変更します。
- サーバー メソッド ユニット(デフォルトではウィザードによって ServerMethodsUnit1 という名前で作成されています)を「ServerModuleUnit」という名前で保存します。
- サーバー コンテナ ユニット(デフォルトではウィザードによって ServerContainerUnit1 という名前で作成されています)を「ServerContainerUnit」という名前で保存します。
- 新しいプロジェクトを「DataSnapServerProject」という名前で保存します。
- [プロジェクト マネージャ]で ProjectGroup1 を選択し、プロジェクトを「DataSnapTutorialProjectGroup.groupproj」という名前で保存します。
DataSnap サーバー上のデータセットを定義する
- ServerContainerUnit.pas ファイルに移動し、Delphi の場合は implementation セクションの uses 句を「
uses Winapi.Windows, ServerModuleUnit
」に、C++ の場合は ServerContainerUnit.cpp で、#include "ServerMethodsUnit.h" を「#include "ServerModuleUnit.h"
」に置き換えます。 - ServerModuleUnit.pas ファイルに移動します。
- フォーム デザイナで、サーバー モジュールの Name プロパティを「DSServerModule_EMPLOYEE」に変更します。
- サーバー モジュール上に以下のコンポーネントを構成します。
- TSQLConnection コンポーネントをサーバー モジュール上にドロップし、以下のプロパティを設定します。
- TSQLConnection は、データベース サーバーへの dbExpress 接続をカプセル化したものです。
- Name プロパティを「SQLConnection_EMPLOYEE」に設定します。
- LoginPrompt プロパティを False に設定します。
- Driver を InterBase Server に設定します。
-
- メモ: InterBase サーバーが動作していることを確認します。
- Driver ノードを展開し、DataBase プロパティを
C:\Users\Public\Documents\Embarcadero\Studio\21.0\Samples\Data\EMPLOYEE.GDB
に設定します。 - Connected プロパティを True に設定します。エラーが発生したら、Driver 以下のプロパティを再確認してください。
- TSQLDataSet コンポーネントをサーバー モジュール上にドロップし、以下のプロパティを設定します。
- TSQLDataSet は、dbExpress を使って取得されたデータを表します。
- Name プロパティを「SQLDataSet_EMPLOYEE」に設定します。
- SQLConnection プロパティを「SQLConnection_EMPLOYEE」に設定します。
- CommandType プロパティを「ctTable」に設定します。
- CommandText プロパティを「EMPLOYEE」に設定します。
- Active プロパティを True に変更。エラーが発生したら、設定したプロパティを再確認してください。
- TDataSetProvider コンポーネントをサーバー モジュール上にドロップし、以下のプロパティを設定します。
- TDataSetProvider では、データセットのデータをパッケージにまとめ、転送可能なデータ パケット(複数可)を DataSnap クライアントに渡します。
- TSQLConnection コンポーネントをサーバー モジュール上にドロップし、以下のプロパティを設定します。
メモ: このチュートリアルでは、例として InterBase を使用します。ただし、どのようなデータベース サーバーにも同じ手順で接続できます。適切なドライバを選択し、使用するデータベースを指すよう他のプロパティを設定してください。
DataSnap サーバーのデータセットを公開する
これで、データセットと次のレイヤ向けにデータをパッケージ化するデータセット プロバイダとを含んだ新しいサーバー モジュールを作成できました。次のステップでは、サーバー モジュールを DataSnap クライアントに公開します。
- フォーム デザイナで ServerContainerUnit を開きます。
- DSServerClass1 を選択し、OnGetClass イベントの既存のイベント ハンドラを更新します。DSServerClass1 のイベント ハンドラに以下のコードを追加します。
Delphi の場合:
procedure TServerContainer1.DSServerClass1GetClass(DSServerClass: TDSServerClass;
var PersistentClass: TPersistentClass);
begin
PersistentClass := TDSServerModule_EMPLOYEE;
end;
C++(iOS 向けのみ)の場合:
void __fastcall TServerContainer1::DSServerClass1GetClass(TDSServerClass *DSServerClass,
TPersistentClass &PersistentClass)
{
PersistentClass = __classid(TDSServerModule_EMPLOYEE);
}
このイベント ハンドラで、DataSnap サーバーは、プロバイダとこのクラスの public メソッド群を DataSnap クライアントに対して公開します。 前のセクションの手順を実施していると、これで DataSetProvider_EMPLOYEE データセット プロバイダ コンポーネントを DataSnap クライアントに公開することになります。
DataSnap サーバーを実行する
DataSnap サーバーの実装は終了しました。DataSnapServerProject.exe を右クリックし、[デバッガを使わずに実行]を選択します。
これで、お使いの Windows マシン上で DataSnap サーバーが動作していることがわかります。DataSnap サーバーには UI 要素がないため空のフォームのように見えますが、この時点ではそれで問題ありません。
DataSnap サーバーに接続するモバイル アプリケーションの作成
次のステップではモバイル クライアント アプリケーションを作成します。
- [プロジェクト マネージャ]で DataSnapTutorialProjectGroup を右クリックし、[新規プロジェクトを追加...]を選択します。
- [Delphi プロジェクト]ページで[マルチデバイス アプリケーション]を選択します。
- 新しいユニットを「DataSnapClientUnit」という名前で保存します。
- 新しいプロジェクトを「DataSnapClientProject」という名前で保存します。
- DataSnapClientUnit を開き、フォームの Name プロパティを「DSClientForm」に変更します。
- フォーム デザイナに以下のコンポーネントを配置します。
- TSQLConnection コンポーネント(SQLConnection1)
- TSQLConnection は、データベース サーバーへの dbExpress 接続をカプセル化したものです。DataSnap サーバーもサポートされています。
- Driver プロパティを DataSnap に設定します。
- Driver プロパティを展開し、HostName プロパティを、DataSnap サーバーのホスト名または IP アドレスに設定します。
- LoginPrompt プロパティを False に設定します。
- Connected プロパティを True に設定します。
- エラーが発生したら、設定したプロパティを再確認してください。
- TDSProviderConnection コンポーネント(DSProviderConnection1)
- TDSProviderConnection コンポーネントでは、dbExpress を使った DataSnap サーバーへの接続を提供しています。
- SQLConnection プロパティを SQLConnection1 に設定します。
- ServerClassName を「TDSServerModule_EMPLOYEE」に設定します。 この名前は、DataSnap サーバーのサーバー モジュールのクラス名と一致する必要があります。
- Connected プロパティを True に設定します。
- TClientDataSet コンポーネント(ClientDataSet1)
- TClientDataSet は、データベース非依存のデータセットを実装したもので、別のデータセットから取り出したレコードのローカルのインメモリ バッファとして使用できます。
- RemoteServer プロパティを DSProviderConnection1 に設定します。
- ProviderName プロパティを「DataSetProvider_EMPLOYEE」に設定します。この名前は、DataSnap サーバーのプロバイダの名前と一致する必要があります。
- Active プロパティを True に設定します。
- TListBoxコンポーネント
- Align プロパティを Client に設定します。
- TSQLConnection コンポーネント(SQLConnection1)
- LiveGindings デザイナを開き、データとユーザー インターフェイスを次のように接続します。
iOS |
Android |
---|---|
MIDAS ライブラリの iOS シミュレータへの配置
iOS シミュレータでアプリケーションを実行するには、以下のファイルを配置する必要があります。
- MIDAS ライブラリ
- [プロジェクト|配置]を選択して、配置マネージャを開きます。
- [機能ファイルの追加]()を選択します。
- 次のモジュールを選択して[OK]をクリックし、配置マネージャを閉じます。
モバイル プラットフォーム上でのアプリケーションの実行
これでアプリケーションを実行する準備が整いました。
[プロジェクト マネージャ]でモバイル ターゲット プラットフォームを選択し、アプリケーションを実行します。IDE 内で実行したときと同様に、データを参照することができるはずです。