各製品の資料を入手。
詳細はこちら →Delphi のSFTP のデータへのデータバインドコントロール
標準のデータアクセスコンポーネントとコントロールを備えたDelphi のSFTP にデータバインドします。
最終更新日:2022-10-02
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData ODBC Driver for SFTP は、ODBC 標準をサポートし、リアルタイムSFTP のデータとビジュアルフォームデザイナおよびDelphi の他のラピッド開発ツールとの統合を可能にします。ODBC ドライバーは、データベース開発用のシングルAPI を提供することにより、Delphi のような単一のコードベースを共有するアプリケーションのデータアクセス戦略を簡素化します。この記事では、SFTP に接続してシンプルなVisual Component Library (VCL) アプリケーションおよびDelphi コードからデータをクエリする方法を説明します。
CData ODBC ドライバとは?
CData ODBC ドライバは、以下のような特徴を持ったリアルタイムデータ連携ソリューションです。
- SFTP をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレミスデータソースに対応
- 多様なアプリケーション、ツールにSFTP のデータを連携
- ノーコードでの手軽な接続設定
- 標準 SQL での柔軟なデータ読み込み・書き込み
CData ODBC ドライバでは、1.データソースとしてSFTP の接続を設定、2.Delphi 側でODBC Driver との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。
CData ODBC ドライバのインストールとSFTP への接続設定
まずは、本記事右側のサイドバーからSFTP ODBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。
未指定の場合は、初めにODBC DSN (data source name) で接続プロパティを指定します。ドライバーのインストールの最後にアドミニストレーターが開きます。Microsoft ODBC Data Source Administrator を使用して、ODBC DSN を作成および構成できます。
FTP は、SFTP プロトコルを使用してSFTP サーバーとの間のファイル転送を行います。接続するにはRemoteHost を指定します。FTP はUser、Password、および公開鍵認証(SSHClientCert)を使用します。 SSHAuthMode を選択し、選択に基づいて接続値を指定します。
次の接続プロパティを設定し、ファイルシステムのリレーショナルビューをコントロールします。
- RemotePath: 現在の作業ディレクトリに設定。
- TableDepth: ビューとしてレポートするサブフォルダの深度を制御するために設定。
- FileRetrievalDepth: ファイルを再帰的に取得し、Root テーブルにリストするために設定。
以下のステップに従ってData Explorer を使用し、SFTP へのFireDAC 接続を作成できます。
- 新しいVCL Forms アプリケーションの[Data Explorer]で[FireDAC]ノードを展開します。
- [Data Explorer]で[ODBC Data Source]ノードを右クリックします。
- [Add New Connection]をクリックします。
- 接続の名前を入力します。
- 表示される[FireDAC Connection Editor]で、[DataSource]プロパティをODBC DSN for SFTP の名前に設定します。

SFTP のデータに接続できるVCL アプリケーションの作成
以下のステップに従って、クエリの結果をグリッドに表示するシンプルなVCL アプリケーションからSFTP のクエリの実行を開始します。
-
TFDConnection コンポーネントフォームにドロップし、以下のプロパティを設定します。
- ConnectionDefName:SFTP へのFireDAC 接続を選択します。
- Connected:メニューから[True]を選択し、表示されるダイアログで資格情報を入力します。
-
TFDQuery コンポーネントをフォームにドロップし、以下のプロパティを設定します。
- Connection:コンポーネントがまだ指定されていない場合は、このプロパティを[TFDConnection]コンポーネントに設定します。
SQL:[SQL]プロパティ内のボタンをクリックし、クエリを入力します。例:
SELECT Filesize, Filename FROM MyDirectory WHERE FilePath = /documents/doc.txt
- Active:このプロパティをtrue に設定します。
TDataSource コンポーネントをフォームにドロップし、以下のプロパティを設定します。
- DataSet:このプロパティのメニューで、TFDQuery コンポーネントの名前を選択します。
-
TDBGrid コントロールをフォームにドロップし、以下のプロパティを設定します。
- DataSource:TDataSource の名前を選択します。
- 実行時エラーを回避するために、TFDGUIxWaitCursor をフォームにドロップします。

FireDAC コンポーネントを使用してSFTP へのコマンドを実行
TFDConnection およびTFQuery コンポーネントを使用してSFTP へのクエリを実行できます。このセクションでは、TFQuery コンポーネントを使用してクエリを実行するSFTP 固有の例を示します。
SFTP のデータに接続
データソースに接続するには、TFDConnection コンポーネントの[Connected]プロパティをtrue に設定します。コードでも同じプロパティを設定できます。
FDConnection1.ConnectionDefName := 'mysftp';
FDConnection1.Connected := true;
パラメータクエリの作成
パラメータ化されたリソースはパフォーマンスを向上させることができます。ステートメントの準備は、システムリソースと時間の面でコストがかかります。ステートメントの準備中、接続がアクティブで開いている必要があるためです。FireDACはデフォルトで、同じクエリが何度もリコンパイルされないようにクエリを準備します。ステートメントの準備を無効にするには、ResourceOptions.DirectExecute を[True]に設定します。クエリを一回だけ実行する必要がある場合などに設定します。
クエリの実行
select クエリなど、結果セットを返すクエリを実行するには、Open メソッドを使用します。Open メソッドは、クエリを実行して結果セットを返し、それを開きます。クエリが結果セットを生成しない場合、Open メソッドはエラーを返します。
FDQuery1.Open('select * from MyDirectory where FilePath = :FilePath',['/documents/doc.txt']);
delete のような結果セットを返さないクエリを実行するには、ExecSQL メソッドを使用します。クエリが結果セットを返す場合、ExecSQL メソッドはエラーを返します。影響を受ける行の数を取得するには、[TFD.RowsAffected]プロパティを使用します。
FDQuery1.ExecSQL('delete from MyDirectory where Id= :myId',['x12345']);
i := FDQuery1.RowsAffected;
おわりに
このようにCData ODBC ドライバと併用することで、270を超えるSaaS、NoSQL データをコーディングなしで扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。
CData ODBC ドライバは日本のユーザー向けに、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。