モバイル チュートリアル:モバイル クライアントからエンタープライズ データベースに接続する(iOS および Android)

提供: RAD Studio
移動先: 案内検索

モバイル チュートリアル:モバイル アプリケーション開発(iOS および Android) への移動


このチュートリアルを開始する前に:

このチュートリアルでは、モバイル クライアント アプリケーションからエンタープライズ データベースに接続する方法を説明します。

エンタープライズ データベースに接続するには、クライアント ライブラリが必要です。クライアント ライブラリは、たいてい、データベース ベンダから DLL 形式で提供されています。しかし、モバイル デバイスの場合はクライアント ライブラリが提供されていないため、この方法は使用できません。この問題を解決するには、エンタープライズ データベースに接続するための中間層を開発して、アプリケーションがその中間層と通信できるようにします。

RAD Studio では、ほとんどコーディングしないで中間層を開発できるよう(そして中間層にアクセスできるよう)、DataSnap フレームワークを提供しています。このチュートリアルでは、中間層を開発し、その後、モバイル クライアントを開発する手順を説明します。


NTiersMobileAppDiagram.png

中間層(DataSnap サーバー)の作成

まず、データベース サーバーのテーブルを公開する DataSnap サーバーを作成します。このチュートリアルでは DataSnap Server VCL フォーム アプリケーションを DataSnap サーバーとして使用します。

メモ: このチュートリアルの DataSnap サーバー(VCL アプリケーション)は、多層データベース アプリケーションの中間層として機能します。 DataSnap サーバーのインスタンスを作成して後で削除することは簡単にできます。基本の手順を理解した後で、中間層を Windows サービス アプリケーションに変換することができます。

DataSnap Server VCL アプリケーションを作成する

  1. 新しい Delphi プロジェクトまたは C++ プロジェクトを作成するには、[ファイル|新規作成|その他...]を選択し、[新規作成]ダイアログで以下を選択します。
    • Delphi の場合: [Delphi プロジェクト|DataSnap Server|DataSnap Server]
    • C++ の場合: [C++Builder プロジェクト|DataSnap Server|DataSnap Server]
    DSServer iOS1.png

  2. [DataSnap サーバーの新規作成]ウィザードが開きます。
    DSServer iOS2.png

    1. 最初のステップで、プロジェクトの種類に[フォーム アプリケーション]を選択します。
    2. 2 番目のステップで、アプリケーションの種類に[VCL アプリケーション]を選択します。
    3. 3 番目のステップで、[サーバーの機能]の一覧から、[TCP/IP]プロトコルと、[サーバー メソッド クラス]および[サンプル メソッド]を選択します。
    4. 4 番目のステップでは、TCP/IP 通信ポートをデフォルトの 211 のままにします。こうしておくと、クライアントとサーバーの間の通信が、デフォルトの DataSnap ポートを通じて行われます。
    5. 最後の(5 番目の)ステップで、[サーバー メソッド クラスの上位クラス]に[TDSServerModule]を選択します。
  3. フォーム ユニットを「DataSnapServerUnit」という名前で保存します。
  4. DataSnapServerUnit に移動し、フォームの Name プロパティを「DSServerForm」に変更します。
  5. サーバー メソッド ユニット(デフォルトではウィザードによって ServerMethodsUnit1 という名前で作成されています)を「ServerModuleUnit」という名前で保存します。
  6. サーバー コンテナ ユニット(デフォルトではウィザードによって ServerContainerUnit1 という名前で作成されています)を「ServerContainerUnit」という名前で保存します。
  7. 新しいプロジェクトを「DataSnapServerProject」という名前で保存します。
  8. [プロジェクト マネージャ]で ProjectGroup1 を選択し、プロジェクトを「DataSnapTutorialProjectGroup.groupproj」という名前で保存します。
    SaveAsDataSnapTutorialProjectGroup.png



DataSnap サーバー上のデータセットを定義する

  1. ServerContainerUnit.pas ファイルに移動し、Delphi の場合は implementation セクションの uses 句を「uses Winapi.Windows, ServerModuleUnit」に、C++ の場合は ServerContainerUnit.cpp で、#include "ServerMethodsUnit.h" を「#include "ServerModuleUnit.h"」に置き換えます。
  2. ServerModuleUnit.pas ファイルに移動します。
  3. フォーム デザイナで、サーバー モジュールの Name プロパティを「DSServerModule_EMPLOYEE」に変更します。
  4. サーバー モジュール上に以下のコンポーネントを構成します。
    • TSQLConnection コンポーネントをサーバー モジュール上にドロップし、以下のプロパティを設定します。
      TSQLConnection は、データベース サーバーへの dbExpress 接続をカプセル化したものです。
      • Name プロパティを「SQLConnection_EMPLOYEE」に設定します。
      • LoginPrompt プロパティを False に設定します。
      • DriverInterBase Server に設定します。
      メモ: InterBase サーバーが動作していることを確認します。
      • Driver ノードを展開し、DataBase プロパティを C:\Users\Public\Documents\Embarcadero\Studio\23.0\Samples\Data\EMPLOYEE.GDB に設定します。
      • Connected プロパティを True に設定します。エラーが発生したら、Driver 以下のプロパティを再確認してください。
        DefineConnectionToInterBase.png

    • TSQLDataSet コンポーネントをサーバー モジュール上にドロップし、以下のプロパティを設定します。
      TSQLDataSet は、dbExpress を使って取得されたデータを表します。
      • Name プロパティを「SQLDataSet_EMPLOYEE」に設定します。
      • SQLConnection プロパティを「SQLConnection_EMPLOYEE」に設定します。
      • CommandType プロパティを「ctTable」に設定します。
      • CommandText プロパティを「EMPLOYEE」に設定します。
      • Active プロパティを True に変更。エラーが発生したら、設定したプロパティを再確認してください。
    • TDataSetProvider コンポーネントをサーバー モジュール上にドロップし、以下のプロパティを設定します。
      TDataSetProvider では、データセットのデータをパッケージにまとめ、転送可能なデータ パケット(複数可)を DataSnap クライアントに渡します。
      • Name プロパティを「DataSetProvider_EMPLOYEE」に設定します。
      • DataSet プロパティを「SQLDataSet_EMPLOYEE」に設定します。
      • ServerModuleUnit.png

メモ: このチュートリアルでは、例として InterBase を使用します。ただし、どのようなデータベース サーバーにも同じ手順で接続できます。適切なドライバを選択し、使用するデータベースを指すよう他のプロパティを設定してください。

DataSnap サーバーのデータセットを公開する

これで、データセットと次のレイヤ向けにデータをパッケージ化するデータセット プロバイダとを含んだ新しいサーバー モジュールを作成できました。次のステップでは、サーバー モジュールを DataSnap クライアントに公開します。

  1. フォーム デザイナで ServerContainerUnit を開きます。
  2. 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 を右クリックし、[デバッガを使わずに実行]を選択します。


RunDataSnapServerProjectWihoutDebugging.png

これで、お使いの Windows マシン上で DataSnap サーバーが動作していることがわかります。DataSnap サーバーには UI 要素がないため空のフォームのように見えますが、この時点ではそれで問題ありません。


RunDataSnapServerRunningOnWindows.png

DataSnap サーバーに接続するモバイル アプリケーションの作成

次のステップではモバイル クライアント アプリケーションを作成します。

  1. [プロジェクト マネージャ]DataSnapTutorialProjectGroup を右クリックし、[新規プロジェクトを追加...]を選択します。
    AddNewProjectToDataSnapTutorialProjectGroup.png

  2. [Delphi プロジェクト]ページで[マルチデバイス アプリケーション]を選択します。
    SelectFireMonkeyMobileApplication.png

  3. 新しいユニットを「DataSnapClientUnit」という名前で保存します。
  4. 新しいプロジェクトを「DataSnapClientProject」という名前で保存します。
  5. DataSnapClientUnit を開き、フォームの Name プロパティを「DSClientForm」に変更します。
  6. フォーム デザイナに以下のコンポーネントを配置します。
    • 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 に設定します。
    Configure iOSDataSnapClient.png

  7. LiveGindings デザイナを開き、データとユーザー インターフェイスを次のように接続します。
    1. ClientDataSet1 の FULL_NAME をクリックし、マウス カーソルを ListBox1 の Item.Text へとドラッグします。
      ConnectFullNameToItemText.png

    2. これで、モバイル プラットフォーム上に DataSnap クライアントを作成し、構成できました。DataSnap サーバーから取り出されたデータを IDE で確認できるはずです。

iOS

Android

DSClientCompleted.png      

DSClientCompletedAndroid.png    

MIDAS ライブラリの iOS シミュレータへの配置

iOS シミュレータでアプリケーションを実行するには、以下のファイルを配置する必要があります。

  • MIDAS ライブラリ
  1. [プロジェクト|配置]を選択して、配置マネージャを開きます。
  2. [機能ファイルの追加]DMgrAddFeatFiles.png)を選択します。
    AddingFeaturedFiles.png

  3. 次のモジュールを選択して[OK]をクリックし、配置マネージャを閉じます。
    • MIDAS ライブラリ
      SelectingMIDASFeaturedFiles.png

モバイル プラットフォーム上でのアプリケーションの実行

これでアプリケーションを実行する準備が整いました。

[プロジェクト マネージャ]でモバイル ターゲット プラットフォームを選択し、アプリケーションを実行します。IDE 内で実行したときと同様に、データを参照することができるはずです。

関連項目