データ ソースまたはドライバーの選択

アプリケーションで使用されるデータ ソースまたはドライバーは、アプリケーション内でハードコーディングされる場合があります。 たとえば、あるデータ ソースから別のデータ ソースにデータを転送するために MIS 部門が作成したカスタム アプリケーションには、それらのデータ ソースの名前が含まれており、そのアプリケーションは他のデータ ソースでは動作しません。 もう 1 つの例は、注文入力に使用されるバーティカル アプリケーションです。 このようなアプリケーションは常に、アプリケーションが認識している事前定義されたスキーマを備えた同じデータ ソースを使用します。

その他のアプリケーションでは、実行時にデータ ソースまたはドライバーを選択します。 通常、これらは、ODBC を使用してデータをインポートするスプレッドシートなど、アドホック クエリを実行する汎用アプリケーションです。 このようなアプリケーションは、通常、使用可能なデータ ソースまたはドライバーを一覧表示し、ユーザーが操作するデータ ソースを選択できるようにします。 汎用アプリケーションがデータ ソース、ドライバー、またはその両方を頻繁に一覧表示するかどうかは、アプリケーションで DBMS ベースのドライバーとファイル ベースのドライバーのどちらを使用するかによって異なります。

通常、DBMS ベースのドライバーには、ネットワーク アドレス、ネットワーク プロトコル、データベース名などの複雑な接続情報セットが必要です。 データ ソースの目的は、この情報をすべて非表示にすることです。 したがって、データ ソース パラダイムは、DBMS ベースのドライバーでの使用に適しています。 アプリケーションは、2 つの方法のいずれかでデータ ソースのリストをユーザーに表示できます。 DSN (データ ソース名) キーワードを使用して、関連する値を指定せずに SQLDriverConnect を呼び出すことができ、ドライバー マネージャーにはデータ ソース名のリストが表示されます。 アプリケーションがリストの外観を制御する必要がある場合は、SQLDataSources を呼び出して使用可能なデータ ソースの一覧を取得し、独自のダイアログ ボックスを構築します。 この関数はドライバー マネージャーによって実装され、ドライバーが読み込まれる前に呼び出すことができます。 その後、アプリケーションは接続関数を呼び出し、選択したデータ ソースの名前を渡します。

データ ソースが指定されていない場合は、システム情報によって示される既定のデータ ソースが使用されます。 (詳細については、「既定のサブキー」を参照してください。) SQLConnect が、見つからないか、NULL ポインターであるか、または "DEFAULT" である ServerName 引数を使用して呼び出された場合、ドライバー マネージャーはデフォルトのデータ ソースに接続します。 既定のデータ ソースは、SQLDriverConnect または SQLBrowseConnect の呼び出しで使用される接続文字列に DSN キーワードが "DEFAULT" に設定されている場合、または指定したデータ ソースが見つからない場合にも使用されます。 さらに、SQLDriverConnect の呼び出しで使用される接続文字列に DSN キーワードが含まれていない場合は、既定のデータ ソースが使用されます。

ファイル ベースのドライバーでは、ファイル パラダイムを使用できます。 ローカル コンピューターにデータが保存されている場合、ユーザーは自分のデータが Employee.dbf などの特定のファイルにあることがよくわかっています。 不明なデータ ソースを選択する代わりに、そのようなユーザーが知っているファイルを選択する方が簡単です。 これを実装するために、アプリケーションは最初に SQLDrivers を呼び出します。 この関数はドライバー マネージャーによって実装され、ドライバーが読み込まれる前に呼び出すことができます。 SQLDrivers は使用可能なドライバーの一覧を返します。また、FileUsage キーワードと FileExtns キーワードの値も返します。 “FileUsage“キーワードは、ファイル ベースのドライバーが、ファイルをテーブルとして扱うか(Xbase が扱うように)、それともデータベースとして扱うか(Microsoft Accessが扱うように)について説明します。 FileExtns キーワードは、Xbase ドライバーの .dbf など、ドライバーが認識するファイル名拡張子を一覧表示します。 この情報を使用して、アプリケーションは、ユーザーがファイルを選択するダイアログ ボックスを作成します。 選択したファイルの拡張子に基づいて、アプリケーションは DRIVER キーワードを使用して SQLDriverConnect を呼び出してドライバーに接続します。

アプリケーションがファイル ベースのドライバーでデータ ソースを使用したり、DRIVER キーワードを使用して SQLDriverConnect を呼び出して DBMS ベースのドライバーに接続するのを止める必要はありません。 DBMS ベースのドライバーの DRIVER キーワードの一般的な使用方法を次に示します。

  • データ ソースを作成していません。 たとえば、カスタム アプリケーションでは、特定のドライバーとデータベースを使用できます。 ドライバー名とデータベースへの接続に必要なすべての情報がアプリケーションでハードコーディングされている場合、ユーザーはアプリケーションを実行するためにコンピューター上にデータ ソースを作成する必要はありません。 アプリケーションとドライバーをインストールする必要があります。

    この方法の欠点は、接続情報が変更された場合にアプリケーションを再コンパイルして再配布する必要があることです。 完全な接続情報ではなく、アプリケーションでデータ ソース名がハードコーディングされている場合、各ユーザーはデータ ソース内の情報のみを変更する必要があります。

  • 特定の DBMS に 1 回アクセスします。 たとえば、ODBC 関数を呼び出してデータを取得するスプレッドシートには、特定のドライバーを識別するための DRIVER キーワードが含まれている場合があります。 ドライバー名は、そのドライバーを持つすべてのユーザーにとって意味があるため、それらのユーザーの間でスプレッドシートを渡すことができます。 スプレッドシートにデータ ソース名が含まれている場合、各ユーザーはスプレッドシートを使用するために同じデータ ソースを作成する必要があります。

  • 特定のドライバーからアクセスできるすべてのデータベースのシステムを参照します。 詳細については、このセクションで後述する「SQLBrowseConnect を使用した接続」を参照してください。