モバイル チュートリアル:モバイル アプリケーションで FireDAC を使用する(iOS および Android)

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

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

このチュートリアルでは、FireDAC フレームワークによりモバイル デバイス上のローカル データ ストレージとして SQLite を使用する基本手順を説明します。

iOS

Android

IPodRunTime.png

AndroidTRunTime.png

FireDAC を使用してデータベースに接続する

FireDAC は、Delphi、C++Builder でマルチデバイス データベース アプリケーションを開発するための他に類を見ない汎用データ アクセス コンポーネント セットです。 FireDAC を使用すると、その強力な共通アーキテクチャのため、Delphi から InterBase、SQLite、MySQL、SQL Server、Oracle、PostgreSQL、IBM DB2、SQL Anywhere、Access、Firebird、Informix などに高速かつ直接にネイティブ アクセスすることができます。

FireDAC ネイティブ ドライバでは、SQLite データベースのバージョン 3.0 以降をサポートしています。 Delphi アプリケーション用に FireDAC で SQLite を使用する方法の詳細は、「FireDAC での SQLite の使用」のトピックを参照してください。

アプリケーションで SQLite を使用するには、開発用システムに sqlite3.dll ファイルがなければなりません。 このファイルが存在しない場合は、http://www.sqlite.org/download.html から sqlite3.dll をダウンロードし、システム パス(64 ビット版 Windows であれば C:\Windows\SysWOW64 など)に配置します。

ユーザー インターフェイスを設計しセットアップする

新規プロジェクトを作成します。 マルチデバイス アプリケーションを選択します。

  1. フォーム上に、TFDConnection コンポーネントをドロップします。
  2. TFDConnection コンポーネントを右クリックし、[接続エディタ...]を選択します。
  3. [FireDAC 接続エディタ]で、TFDConnection のパラメータを以下のように設定します。
    1. Driver ID プロパティを SQLite に設定します。
    2. Database パラメータを次のように設定します:
      C:\Users\Public\Documents\Embarcadero\Studio\23.0\Samples\Data\Employees.s3db(データベースの場所)
      [ファイルを開く]ダイアログ ボックスで、[開く]をクリックします。
      ([開く]ダイアログに Employees.s3db に表示するには、[すべてのファイル(*.*)]オプションを設定します。)
      ConnectionEdtFD.png

    3. [テスト]ボタンをクリックして、接続をテストします。
      TestConnectionSuccess.png

    4. [OK]をクリックして、[FireDAC 接続エディタ]を閉じます。
  4. オブジェクト インスペクタで、TFDConnection のプロパティを次のように設定します。
    1. LoginPrompt プロパティを False に設定して、ユーザーにログインを求めるプロンプトを表示しないようにします。
    2. Connected プロパティを True に設定します。

[LiveBinding ウィザード]を使用する

[LiveBindings ウィザード]を使用して、LiveBindings コンポーネント(TBindSourceDBTBindingsList)や TFDQueryTListView のコンポーネントを追加することができます。

LiveBinding コンポーネントを追加する

  1. [表示|LiveBinding デザイナ]を選択して[LiveBinding デザイナ]を開きます。
  2. [LiveBindings ウィザード]を選択します。
    SelectLiveBindWizard.png

  3. [データ ソースの作成]バインディング タスクを選択します。
  4. [次へ]ボタンをクリックします。
  5. クラス名に[FireDAC]を選択します。
  6. [次へ]ボタンをクリックします。
  7. [コマンド タイプ]Query に変更します。
  8. [コマンド テキスト]プロパティを「select Name, Department, Seniority from Employee order by Department」に設定します。
    LiveBindWizardFD.png

  9. [コマンドのテスト]ボタンをクリックします。
  10. [次へ]ボタンをクリックします。
  11. [完了]ボタンをクリックします。

この時点で、TBindSourceDBTFDQuery のコンポーネントがフォームに追加されました。

リスト ビュー コンポーネントを追加する

  1. LiveBindings デザイナを再度開きます。
  2. [コントロールをフィールドとリンク]バインディング タスクを選択します。
    ControlFieldWizard.png

  3. [次へ]ボタンをクリックします。
  4. TListView を選択します。
  5. [次へ]ボタンをクリックします。
  6. BindSourceDB1 を選択します。
  7. [次へ]ボタンをクリックします。
  8. フィールド名に Name を選択します。
    FieldNameWizard.png

  9. [次へ]ボタンをクリックします。
  10. [完了]ボタンをクリックしてウィザードを閉じます。

[LiveBinding ウィザード]を使用する

[LiveBinding デザイナ]

[LiveBinding デザイナ]を使用して、TBindSourceDB および TListView コンポーネント間に、新しい接続を追加することができます。

  1. TListView から、ItemHeader.Text メンバーを選択します。
  2. ドラッグして BindSourceDB1 コンポーネントの Department メンバにバインドします(接続線が表示されます)。
  3. TListView から、Item.Text メンバーを選択します。
  4. ドラッグして BindSourceDB1 コンポーネントの Name メンバにバインドします(接続線が表示されます)。
  5. オブジェクト インスペクタで、TListView のプロパティを以下のように設定します:
    1. ItemAppearanceImageListItemRightButton に設定します。
      [LiveBinding デザイナ]では、TListView に新しいメンバ Item.ButtonText が表示されます。
    2. Align プロパティを Client に設定します。
  6. [LiveBinding デザイナ]で、Item.ButtonText メンバーを TListView から選択します。
  7. ドラッグして BindSourceDB1 コンポーネントの Seniority メンバにバインドします(接続線が表示されます)。

実行時用にアプリケーションを準備する

FireDAC は疎結合の多層アーキテクチャを備えており、各レイヤでサービスが提供されます。 それぞれのサービス API は、他のレイヤからインターフェイス ファクトリを使って要求できる COM インターフェイスとして定義されています。

FireDAC を適切に動作させるには、IFDGUIxWaitCursor インターフェイスと IFDPhysDriver インターフェイスの実装をアプリケーションにリンクする必要があります。

このために、TFDGUIxWaitCursorTFDPhysSQLiteDriverLink コンポーネントを、フォーム上にドロップします。

モバイル用にデータベースの配置をセットアップする

ここまでは、デスクトップで SQLite を使用してきました。 つまり、実際のデータベースは、ローカルのハードディスク ドライブ上にあります(C:\Users\Public\Documents\Embarcadero\Studio\23.0\Samples\Data\Employees.s3db など)。 モバイル デバイスでは、アプリケーションはサンドボックス化されるため、通常はアプリケーション フォルダ下の Documents フォルダ(iOS デバイスの場合)および internal 記憶域(Android デバイスの場合)にあるデータしか読み書きできません。

モバイル上でローカル データベースに接続するには、以下の作業を実施する必要があります。

  • データベースをモバイル デバイスに配置する。
  • (データベース ファイルに接続するための)構成を、Documents フォルダ(iOS デバイスの場合)または internal 記憶域(Android デバイスの場合)のローカル ファイルに変更する。

データベース ファイルを配置マネージャに追加し構成する

モバイル上でアプリケーションを実行するには、データベース ファイル(Employees.s3db)の配置情報をセットアップする必要があります。

  1. [プロジェクト|配置]を選択して、配置マネージャを開きます。
  2. [ファイルの追加]を選択し、データベース ファイルを選択します(C:\Users\Public\Documents\Embarcadero\Studio\23.0\Samples\Data\Employees.s3db など)。
    AddingDatabaseFile.png

  3. Employees.s3db を選択し、[リモート パス]StartUp\Documents\(iOS プラットフォームの場合)または assets\internal\(Android プラットフォームの場合)に変更します。
    iOS デバイス プラットフォームの[リモート パス]
    RemotePathEmployees.png

    Android プラットフォームの[リモート パス]
    AndroidRemotePathAssets.png

  4. [プラットフォーム]の列を選択して次の作業を行います(Employees.s3db の行で参照([...])ボタンをダブルクリックします)。
    1. Employees.s3db について、[iOSSimulator][iOSDevice]または[Android]が含まれていることを確認します。
    2. [Win32]が含まれている場合にはリストから削除します(データベース ファイルを Win32 プラットフォームにコピーする必要はありません)。
  5. [すべての構成 - iOS デバイス プラットフォーム]または[すべての構成 - Android プラットフォーム]を選択し、Employees.s3dbStartUp\Documents\ または assets\internal\ に配置するよう設定していることを確認します。

このように構成すると、モバイル デバイス上でアプリケーションを実行したときに、アプリケーションのサンドボックス領域の Documents フォルダ(iOS プラットフォームの場合)または internal 記憶域(Android プラットフォームの場合)にデータベース ファイル(Employees.s3db)を配置するよう、設定されます。

モバイル デバイス上のローカル データベース ファイルに接続するようコードを変更する

このアプリケーションの基本的な機能の実装はこれで終わりです。 このアプリケーションで使われているデータベース ファイルは Windows 上で作成されたものなので、ファイルをモバイル デバイスにコピーするかその場で作成しなければ、モバイル デバイス上で使用できません。

モバイル デバイス上での SQLite データベースの場所を指定する

  1. フォーム デザイナで FDConnection1 コンポーネントを選択します。
  2. オブジェクト インスペクタで、BeforeConnect イベントをダブルクリックします。
  3. このイベント ハンドラに次のコードを追加します。


Delphi:

procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
begin
  FDConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'Employees.s3db');
end;

TPath レコードは System.IOUtils ユニットで宣言されているため、ユニットの uses 句に System.IOUtils を追加する必要があります。


C++ (iOS の場合のみ):

void __fastcall TForm1::FDConnection1BeforeConnect(TObject *Sender)
{
          FDConnection1->Params->Values["ColumnMetadataSupported"] = "False";
          FDConnection1->Params->Values["Database"] = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), "Employees.s3db");
}

TPath レコードは、System.IOUtils ライブラリで宣言されているため、ヘッダー ユニットに #include <System.IOUtils.hpp> を追加する必要があります。

シミュレータまたはモバイル デバイス上でアプリケーションを実行する

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

iOS

Android

IPodRunTime.png

AndroidTRunTime.png

関連項目