TSQLConnection のセットアップ
DbExpress を使用したデータベース サーバーへの接続 への移動
操作手順:データベース手順を実行する への移動
TSQLConnection が接続を開くため、データベース接続について十分な詳細を記述するには、使用するドライバとそのドライバに渡す接続パラメータ セットの両方を識別する必要があります。
ドライバの識別
ドライバは、DriverName プロパティで識別します。これは、ASA、ASE、Datasnap、DB2、Firebird、Informix、InterBase、MSSQL、MSSQL9、MySQL、Odbc、Oracle など、インストールされている dbExpress ドライバの名前です。これらのデータベースは Dynalink ドライバを使用しますが、部分的に Object Pascal で書かれています。Dynalink ドライバの場合、ドライバ名はそうしたファイルに関連付けられています。
- dbExpress ドライバ。これは、dbx*.dll などの名前の付いたダイナミック リンク ライブラリです。たとえば、Interbase ドライバ DLL は "dbxint" で始まり、Oracle ドライバ DLL は "dbxora" で始まります。
- クライアント側サポートのため、データベース ベンダが提供するダイナミック リンク ライブラリ。
これらのファイルとデータベース名との関連が dbxdrivers.ini というファイルに保管され、dbExpress ドライバをンストールするときに更新されます。一般に、これらのファイルについて心配する必要はありません。なぜなら、DriverName の値が指定されると、SQL 接続コンポーネントが dbxdrivers.ini の中を検索するからです。DriverName プロパティを設定すると、TSQLConnection の LibraryName プロパティと VendorLib プロパティが関連する DLL 名に自動的に設定されます。LibraryName と VendorLib が設定されれば、アプリケーションは dbxdrivers.ini に依存する必要はありません(つまり、実行時に DriverName プロパティを設定しないのであれば、アプリケーションに dbxdrivers.ini を配置する必要はありません)。
接続パラメータの指定
Params プロパティは、名前と値のペアを含む文字列リストです。それぞれのペアの形式は Name
=Value
で、Name
はパラメータ名、Value
は代入する値です。
指定しなければならない具体的なパラメータは、使用するデータベース サーバーによって異なります。ただし、特別なパラメータ Database
はどのサーバーでも必要です。その値は、使用しているサーバーによって異なります。たとえば、InterBase の場合、Database
は .gdb ファイルの名前です。ORACLE の場合は TNSNames.ora 内のエントリ、DB2 の場合はクライアント側のノード名です。
その他の主なパラメータには、User_Name
(ログイン時に使用する名前)、Password
(User_Name
のパスワード)、HostName
(サーバーが置かれているマシンの名前または IP アドレス)、および TransIsolation
(導入するトランザクションが、他のトランザクションによって行われた変更を認識するレベル)があります。ドライバ名を指定すると、その種類のドライバに必要なすべてのパラメータがあらかじめ Params
プロパティに読み込まれ、デフォルト値に初期化されます。アプリケーションで必要であれば、Params
文字列リストに他の接続パラメータを追加することもできます。たとえば、MSSQL ドライバを使用して、SQL 接続に対する複数のアクティブな結果セット(MARS:Multiple Active Result Set)をサポートするには、Mars_Connection
というキーを追加して、その値を True に設定する必要があります。
もう 1 つ、SQLite データベース接続で役立つパラメータに、FailIfMissing
があります。FailIfMissing
を True に設定すると、データベースが存在しない場合にはデータベース接続が失敗します。逆に FailIfMissing
を False に設定すると、データベースが存在しない場合には作成されます。
SQLite データベースの ColumnMetaDataSupported 接続プロパティは、sqlite3 ライブラリのコンパイル時に C プリプロセッサ シンボル SQLITE_ENABLE_COLUMN_METADATA が定義されていたかどうかを表します。このプロパティはデフォルトで、Windows の場合には True、MacOS の場合には False になっています。
Params
は文字列リストなので、設計時に[オブジェクト インスペクタ]で Params プロパティをダブルクリックして、文字列リスト エディタを使用して各種パラメータを編集できます。実行時には、Params.Values プロパティを使用して、個々のパラメータに値を代入できます。
接続記述の命名
常に DatabaseName プロパティと Params プロパティだけを使用して接続を指定することができますが、特定の組み合わせに名前を付けて、名前で接続を識別するほうが便利です。dbExpress データベースとパラメータの組み合わせに名前を付けることができ、それが dbxconnections.ini というファイルに保存されます。各組み合わせの名前は、接続名と呼ばれます。
接続名を定義すると、データベース接続は ConnectionName プロパティに有効な接続名を設定するだけで識別できます。ConnectionName の設定により、DriverName プロパティと Params プロパティが自動的に設定されます。ConnectionName を設定すると、Params プロパティを編集して、保存されているパラメータ値の設定とは一時的に異なる設定を作成できますが、DriverName プロパティを変更すると、Params と ConnectionName の両方がクリアされます。
接続名を使用する利点は、1 つのデータベース(たとえば、ローカルな InterBase)を使用してアプリケーションを開発し、それを他のデータベース(ORACLE など)で利用するために配置するときに明らかになります。その場合、アプリケーションを配備するシステムでは、DriverName と Params が開発中に使用する値とは異なる可能性が高くなります。2 つの異なるバージョンの dbxconnections.ini ファイルを使用することで、2 つの接続の記述を簡単に切り替えることができます。設計時、アプリケーションは DriverName と Params を設計時バージョンの dbxconnections.ini から読み込みます。次に、アプリケーションを配置するときには、別のバージョンの "実"データベースを使用する dbxconnections.ini から値を読み込みます。しかし、これをうまく機能させるためには、実行時に DriverName プロパティと Params プロパティを再度読み込むよう接続コンポーネントに指示する必要があります。これには、次の 2 つの方法があります。
- LoadParamsOnConnect プロパティを True に設定します。これにより、接続を開くときに TSQLConnection では DriverName と Params が dbxconnections.ini にある ConnectionName に関連付けられた値に設定されます。
- LoadParamsFromIniFile メソッドを呼び出します。このメソッドにより、DriverName と Params が dbxconnections.ini(または指定した他のファイル)にある ConnectionName に関連付けられた値に設定されます。接続を開く前に一定のパラメータ値を上書きする場合には、このメソッドの使用を選択します。
接続エディタの使用
接続名とそれに関連付けられたドライバと接続パラメータとの関係は、dbxconnections.ini ファイルに格納されます。これらの関連は、接続エディタを使用して作成または変更できます。
接続エディタを表示するには、TSQLConnection コンポーネントをダブルクリックします。接続エディタに、使用可能なすべてのドライバが含まれたドロップダウン リスト、現在選択されているドライバの接続名の一覧、現在選択されている接続名のための接続パラメータを一覧したテーブルが表示されます。
このダイアログを使用して、ドライバと接続名を選択することにより、使用する接続を指定できます。使用する構成を選択したら、[接続テスト]ボタンをクリックして、有効な構成を選択したことを確認します。
さらに、このダイアログを使用して、dbxconnections.ini にある名前付き接続を編集できます。
- パラメータ テーブルにあるパラメータ値を編集して、現在選択されている名前付き接続を変更します。[OK]をクリックしてダイアログを終了すると、新しいパラメータ値が dbxconnections.ini に保存されます。
- [接続の追加]ボタンをクリックして、新しい名前付き接続を定義します。使用するドライバと新しい接続の名前を指定したところにダイアログが表示されます。接続に名前を付けたら、そのパラメータを編集して使用する接続を指定し、[OK]ボタンをクリックして、新しい接続を dbxconnections.ini に保存します。
- [接続の削除]ボタンをクリックして、現在選択されている名前付き接続を dbxconnections.ini から削除します。
- [接続名の変更]ボタンをクリックして、現在選択されている名前付き接続の名前を変更します。パラメータに対して行った変更は、[OK]ボタンをクリックすると、新しい名前で保存されます。