C++Builder でGoogle Drive のデータにデータバインドするコントロールを作成
CData ODBC ドライバー for Google Drive を使用すると、C++Builder の標準データアクセスコンポーネントを使ってライブのGoogle Drive のデータ への接続を簡単に統合できます。この記事では、C++Builder でシンプルな VCL(Visual Component Library)アプリケーションを作成し、Google Drive のデータ に接続してクエリを実行し、グリッドに結果を表示する方法を説明します。さらに、FireDAC コンポーネントを使ってコードからコマンドを実行する方法も紹介します。
Google Drive のデータへの接続を作成
まだ設定していない場合は、ODBC DSN(データソース名)で接続プロパティを指定します。これはドライバーインストールの最終ステップです。Microsoft ODBC データソースアドミニストレーターを使って ODBC DSN を作成・設定できます。
Google Drive はOAuth 認証標準を利用しています。各ユーザーやドメイン内のユーザーの代わりに、CData 製品がGoogle API にアクセスすることを許可できます。 接続すると、CData 製品はデフォルトブラウザでOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。CData 製品がOAuth プロセスを完了します。
詳細はヘルプドキュメントを参照してください。
尚、CData 製品はGoogle Drive のファイルの一覧表示やユーザー管理情報の取得用です。Google Drive に保管されているExcel、CSV、JSON などのファイル内のデータを読み込みたい場合には、Excel Driver、CSV Driver、JSON Driver をご利用ください。
次に、以下の手順に従って Data Explorer を使用し、Google Drive への FireDAC 接続を作成します。
- 新しい VCL Forms アプリケーションで、Data Explorer の FireDAC ノードを展開します。
- Data Explorer の ODBC Data Source ノードを右クリックします。
- Add New Connection をクリックします。
- 接続の名前を入力します。
- 表示される FireDAC Connection Editor で、DataSource プロパティをGoogle Drive の ODBC DSN の名前に設定します。
Google Drive のデータに接続する VCL アプリケーションを作成
以下の手順に従って、クエリの結果をグリッドに表示するシンプルな VCL アプリケーションからGoogle Drive のデータ のクエリを開始します。
-
TFDConnection コンポーネントをフォームにドロップし、以下のプロパティを設定します:
- ConnectionDefName:Google Drive への FireDAC 接続を選択します。
- Connected:メニューから True を選択し、表示されるダイアログで資格情報を入力します。
-
TFDQuery コンポーネントをフォームにドロップし、以下のプロパティを設定します:
- Connection:TFDConnection コンポーネントに設定します(まだ指定されていない場合)。
SQL:SQL プロパティのボタンをクリックし、クエリを入力します。例:
SELECT Name, Size FROM Files
- Active:このプロパティを true に設定します。
TDataSource コンポーネントをフォームにドロップし、以下のプロパティを設定します:
- DataSet:このプロパティのメニューで、TFDQuery コンポーネントの名前を選択します。
-
TDBGrid コントロールをフォームにドロップし、以下のプロパティを設定します:
- DataSource:TDataSource の名前を選択します。
- TFDGUIxWaitCursor をフォームにドロップします — これは実行時エラーを回避するために必要です。
FireDAC コンポーネントを使ってGoogle Drive にコマンドを実行
TFDConnection および TFQuery コンポーネントを使用して、Google Drive のデータ にクエリを実行できます。このセクションでは、TFQuery コンポーネントを使ったクエリ実行のGoogle Drive 固有の例を紹介します。
Google Drive のデータに接続
データソースに接続するには、TFDConnection コンポーネントの Connected プロパティを true に設定します。コードから同じプロパティを設定することもできます:
FDConnection1->ConnectionDefName = "CData Google Drive ODBC Source"; FDConnection1->Connected = true;
TFDQuery コンポーネントをGoogle Drive のデータ に接続するには、コンポーネントの Connection プロパティを設定します。設計時に TFDQuery コンポーネントを追加すると、上記のアプリケーションのように、その Connection プロパティはフォーム上の TFDConnection を指すように自動的に設定されます。
パラメータ化クエリの作成
パラメータ化クエリを作成するには、以下の構文を使用します:
FDQuery1->SQL->Text = "select * from Files where starred = :Starred";
FDQuery1->ParamByName("starred")->AsString = "true";
FDQuery1->Open();
上記の例では、文字列型の入力パラメータを名前でバインドし、結果のデータセットを開いています。
ステートメントの準備
ステートメントの準備は、システムリソースと時間の両方でコストがかかります。ステートメントの準備中は、接続がアクティブで開いている必要があります。デフォルトでは、FireDAC は同じクエリを何度もコンパイルすることを避けるためにクエリを準備します。ステートメントの準備を無効にするには、ResourceOptions.DirectExecute を True に設定します。例えば、クエリを一度だけ実行する必要がある場合などです。
クエリの実行
SELECT クエリなど、結果セットを返すクエリを実行するには、Open メソッドを使用します。Open メソッドはクエリを実行し、結果セットを返して開きます。クエリが結果セットを生成しない場合、Open メソッドはエラーを返します。
FDQuery1->SQL->Text = "select * from Files where starred = :Starred";
FDQuery1->ParamByName("starred")->AsString = "true";
FDQuery1->Open();
結果セットを返さないクエリを実行するには、ExecSQL メソッドを使用します。クエリが結果セットを返す場合、ExecSQL メソッドはエラーを返します。影響を受けた行数を取得するには、TFD.RowsAffected プロパティを使用します。
FDQuery1->SQL->Text = "delete from Files where Id = :Id";
FDQuery1->Params->Items[0]->AsString = "x12345";
FDQuery1->ExecSQL();
AnsiString i = FDQuery1->RowsAffected;
ShowMessage("Rows affected: " + i);
関連記事
以下に、RAD Studio、Delphi、C++ Builder で CData ODBC ドライバーを使用するための他の記事を紹介します。