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

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

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

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

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

データ ソースの設定

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

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

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

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

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

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

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

注意

一部の ファイルを表示 するには、ドロップダウン メニューで [すべてのファイル] を選択.xlsがあります。

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

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

マルチユーザー環境

複数のユーザーが同じデータ ソースにアクセスする場合は、自分がアクセスしているレコードセットのデータが、ほかのユーザーによって変更されてしまうおそれがあります。 同じように、自分が他のユーザーのレコードセットを変更してしまう場合もあります。 詳細については、「レコードセット : レコードセットのレコード更新方法 (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. または メンバー関数 OpenExOpen 呼び出します。

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

データ ソースからの切断

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

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

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

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

CDatabase オブジェクトの再利用

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

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

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

  2. オブジェクトを破棄する代わりに、 または メンバー関数を再度 OpenExOpen 呼び出します。

関連項目

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