データ ソース : 接続 (ODBC)

このトピックの内容は、MFC ODBC クラスに該当します。

このトピックでは、次の内容について説明します。

データ ソースとの接続とは、データにアクセスするために DBMS との通信を確立することです。 ODBC ドライバーを通じてデータ ソースと接続すると、データ ソースの位置がローカルでもネットワークでも、自動的に接続されます。

ODBC ドライバーがあるデータ ソースならば、どのデータ ソースにでも接続できます。 アプリケーションのユーザーも、同じ ODBC ドライバーを持つ必要があります。 ODBC ドライバーの再配布方法の詳細については、「顧客への ODBC コンポーネントの再配布」を参照してください。

データ ソースの構成

データ ソースの設定は、ODBC データ ソース アドミニストレーターを使って行います。 データ ソースの追加や削除も行うことができます。 アプリケーションを作成する際には、ODBC データ ソース アドミニストレーターを使用してデータ ソースを追加するようにアプリケーションのユーザーに指示するか、アプリケーション内で ODBC インストール呼び出しを直接行って ODBC データ ソース アドミニストレーターの機能を組み込むことができます。 詳細については、「ODBC アドミニストレーター」を参照してください。

Excel のファイルをデータ ソースとして使用することもできます。この場合は、ファイルを登録し、[データ ソースの選択] ダイアログ ボックスに表示されるように設定する必要があります。

Excel のファイルをデータ ソースとして使うには

  1. ODBC データ ソース アドミニストレーターを使ってファイルを設定します。

  2. [ファイル DSN] タブの [追加] をクリックします。

  3. [データ ソースの新規作成] ダイアログ ボックスで、Excel ドライバーを選択し、[次へ] をクリックします。

  4. [参照] をクリックし、データ ソースとして使用するファイルの名前を選択します。

Note

ドロップダウン メニューの [すべてのファイル] を選択しないと、.xls ファイルが表示されない場合もあります。

  1. [次へ] をクリックし、 [完了] をクリックします。

  2. [ODBC Microsoft Excel Setup] ダイアログ ボックスで、データベースのバージョンとブックを選択します。

マルチユーザー環境での作業

複数のユーザーが同じデータ ソースにアクセスする場合は、自分がアクセスしているレコードセットのデータが、ほかのユーザーによって変更されてしまうおそれがあります。 同じように、自分が他のユーザーのレコードセットを変更してしまう場合もあります。 詳細については、「レコードセット: レコードセットでのレコード更新のしくみ (ODBC)」と「トランザクション (ODBC)」を参照してください。

接続文字列の一般化

ウィザードは、既定の接続文字列を使ってデータ ソースとの接続を行います。 アプリケーションの開発時には、この接続を使ってテーブルや列を表示できます。 しかし、この既定の接続文字列は、アプリケーションのユーザーがデータ ソースに接続する際に適切ではない場合もあります。 たとえば、実際に使われるデータ ソースおよびその位置を表すパスは、開発時とは異なる場合があります。 そのような場合は、CRecordset::GetDefaultConnect メンバー関数をより汎用的な形式で再実装し、ウィザードによって実装されたメンバー関数を破棄してください。 たとえば、次のような方法があります。

  • ODBC データ ソース アドミニストレーターを使って接続文字列の登録、管理を行います。

  • 接続文字列を編集し、データ ソース名を削除します。 フレームワークによって、データ ソース名として ODBC が指定され、実行時には、ODBC では、データ ソース名などの必要な接続情報の入力を求めるダイアログ ボックスが表示されます。

  • データ ソース名だけを指定します。 ODBC は、必要に応じて、ユーザー ID とパスワードの入力を求めます。 たとえば、元の接続文字列が次のようになっているとします。

    CString CApp1Set::GetDefaultConnect()
    {
       return "ODBC;DSN=afx;Trusted_Connection=Yes;";
    }
    

    この接続文字列では、Windows NT 統合セキュリティを使用する信頼された接続を指定します。 セキュリティ上の重大な弱点が生成されるため、パスワードのハードコーディングや空白のパスワードの指定は避けてください。 その代わりに、GetDefaultConnect に新しい接続文字列を指定して、ユーザー ID とパスワードの問い合わせができます。

    // User must select data source and supply user ID and password:
        return "ODBC;";
    // User ID and password required:
        return "ODBC;DSN=mydb;";
    // Password required (myuserid must be replaced with a valid user ID):
        return "ODBC;DSN=mydb;UID=myuserid;";
    // Hard-coded user ID and password (SECURITY WEAKNESS--AVOID):
        return "ODBC;DSN=mydb;UID=sa;PWD=777;";
    

特定のデータ ソースへの接続

特定のデータ ソースに接続するには、あらかじめ ODBC アドミニストレーターでデータ ソースを設定しておく必要があります。

データ ソースに接続するには

  1. CDatabase オブジェクトを構築します。

  2. そのメンバー関数 OpenEx または Open を呼び出します。

ウィザードで指定したデータ ソース以外のデータ ソースを指定する方法については、"MFC リファレンス" の「CDatabase::OpenEx」または「CDatabase::Open」を参照してください。

データ ソースからの切断

CDatabase のメンバー関数 Close を呼び出す前に、開いているすべてのレコードセットを閉じておく必要があります。 閉じようとしている CDatabase オブジェクトに関連付けられているレコードセットで保留中の AddNew ステートメントまたは Edit ステートメントはキャンセルされ、保留中のすべてのトランザクションはロールバックされます。

データ ソースとの接続を終了するには

  1. CDatabase オブジェクトのメンバー関数 Close を呼び出します。

  2. 再利用しない場合にはオブジェクトを破棄します。

CDatabase オブジェクトの再利用

接続を終了した後で CDatabaseオブジェクトを再利用できます。再利用時の接続先は、同じデータ ソースでも別のデータ ソースでもかまいません。

CDatabase オブジェクトを再利用するには

  1. オブジェクトの元の接続を閉じます。

  2. オブジェクトを破棄せずに、そのメンバー関数 OpenEx または Open を再度呼び出します。

関連項目

データ ソース (ODBC)
データ ソース: データ ソースのスキーマの判定 (ODBC)
CRecordset クラス