各製品の資料を入手。
詳細はこちら →Delphi のMySQL のデータへのデータバインドコントロール
標準のデータアクセスコンポーネントとコントロールを備えたDelphi のMySQL にデータバインドします。
最終更新日:2022-10-02
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData ODBC Driver for MySQL は、ODBC 標準をサポートし、リアルタイムMySQL のデータとビジュアルフォームデザイナおよびDelphi の他のラピッド開発ツールとの統合を可能にします。ODBC ドライバーは、データベース開発用のシングルAPI を提供することにより、Delphi のような単一のコードベースを共有するアプリケーションのデータアクセス戦略を簡素化します。この記事では、MySQL に接続してシンプルなVisual Component Library (VCL) アプリケーションおよびDelphi コードからデータをクエリする方法を説明します。
CData ODBC ドライバとは?
CData ODBC ドライバは、以下のような特徴を持ったリアルタイムデータ連携ソリューションです。
- MySQL をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレミスデータソースに対応
- 多様なアプリケーション、ツールにMySQL のデータを連携
- ノーコードでの手軽な接続設定
- 標準 SQL での柔軟なデータ読み込み・書き込み
CData ODBC ドライバでは、1.データソースとしてMySQL の接続を設定、2.Delphi 側でODBC Driver との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。
CData ODBC ドライバのインストールとMySQL への接続設定
まずは、本記事右側のサイドバーからMySQL ODBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。
未指定の場合は、初めにODBC DSN (data source name) で接続プロパティを指定します。ドライバーのインストールの最後にアドミニストレーターが開きます。Microsoft ODBC Data Source Administrator を使用して、ODBC DSN を作成および構成できます。
Server およびPort プロパティがMySQL への接続には必須です。IntegratedSecurity をFALSE に設定した場合、User、Password も必須になります。 オプションで、Database を設定することもできます。Database は設定がない場合すべてのデータベースを使えるようになります。
パスワード方式によるSSH 接続
パスワード方式によるSSH接続時に必要なプロパティ一覧を以下に示します。
- User: MySQL のユーザ
- Password: MySQL のパスワード
- Database: MySQL の接続先データベース
- Server: MySQL のサーバー
- Port: MySQL のポート
- UserSSH: "true"
- SSHAuthMode: "Password"
- SSHPort: SSH のポート
- SSHServer: SSH サーバー
- SSHUser: SSH ユーザー
- SSHPassword: SSH パスワード
接続文字列形式では以下のようになります。
User=admin;Password=adminpassword;Database=test;Server=mysql-server;Port=3306;UseSSH=true;SSHAuthMode=Password;SSHPort=22;SSHServer=ssh-server;SSHUser=root;SSHPassword=sshpasswd;
公開鍵認証方式方式によるSSH 接続
公開鍵認証によるSSH接続時に必要なプロパティ一覧を以下に示します。
- User: MySQL のユーザ
- Password: MySQL のパスワード
- Database: MySQL の接続先データベース
- Server: MySQL のサーバー
- Port: MySQL のポート
- UserSSH: "true"
- SSHAuthMode: "Public_Key"
- SSHClientCertType: キーストアの種類
- SSHPort: SSH のポート
- SSHServer: SSH サーバー
- SSHUser: SSH ユーザー
- SSHClientCert: 秘密鍵ファイルのパス
接続文字列形式では以下のようになります。
User=admin;Password=adminpassword;Database=test;Server=mysql-server;Port=3306;UseSSH=true;SSHAuthMode=Public_Key;SSHClientCertType=PUBLIC_KEY_FILE;SSHPort=22;SSHServer=ssh-server;SSHUser=root;SSHClientCert=C:\Keys\key.pem;
以下のステップに従ってData Explorer を使用し、MySQL へのFireDAC 接続を作成できます。
- 新しいVCL Forms アプリケーションの[Data Explorer]で[FireDAC]ノードを展開します。
- [Data Explorer]で[ODBC Data Source]ノードを右クリックします。
- [Add New Connection]をクリックします。
- 接続の名前を入力します。
- 表示される[FireDAC Connection Editor]で、[DataSource]プロパティをODBC DSN for MySQL の名前に設定します。

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

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