データ ソース: 接続 (ODBC)
このトピックの内容は、MFC ODBC クラスに該当します。
このトピックでは、次の内容について説明します。
データ ソースの設定
マルチユーザー環境
接続文字列の汎用化
データ ソースへの接続
データ ソースとの接続の終了
CDatabase オブジェクトの再利用
データ ソースとの接続とは、データにアクセスするために DBMS との通信を確立することです。 ODBC ドライバーを通じてデータ ソースと接続すると、データ ソースの位置がローカルでもネットワークでも、自動的に接続されます。
ODBC ドライバーがあるデータ ソースならば、どのデータ ソースにでも接続できます。 アプリケーションのユーザーも、同じ ODBC ドライバーを持つ必要があります。 ODBC ドライバーの再配布方法の詳細については、「ODBC の構成要素の配布」を参照してください。
データ ソースの設定
データ ソースの設定は、ODBC データ ソース アドミニストレーターを使って行います。 データ ソースの追加や削除も行うことができます。 アプリケーションを作成する際には、ODBC データ ソース アドミニストレーターを使用してデータ ソースを追加するようにアプリケーションのユーザーに指示するか、アプリケーション内で ODBC インストール呼び出しを直接行って ODBC データ ソース アドミニストレーターの機能を組み込むことができます。 詳細については、「ODBC データ ソース アドミニストレーター」を参照してください。
Excel のファイルをデータ ソースとして使うこともできます。この場合は、ファイルを登録し、[データ ソースの選択] ダイアログ ボックスに表示されるように設定する必要があります。
Excel のファイルをデータ ソースとして使うには
ODBC データ ソース アドミニストレーターを使ってファイルを設定します。
[DSN] タブの [追加] をクリックします。
[データ ソースの新規作成] ダイアログ ボックスで、Excel ドライバーを選択し、[次へ] をクリックします。
[参照] をクリックし、データ ソースとして使用するファイルの名前を選択します。
注意
ドロップダウン メニューの [すべてのファイル] を選択しないと、.xls ファイルが表示されない場合もあります。
[次へ] をクリックし、[完了] をクリックします。
[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 データ ソース アドミニストレーターでデータ ソースを設定しておきます。
データ ソースに接続するには
CDatabase オブジェクトを構築します。
メンバー関数の OpenEx または Open を呼び出します。
ウィザードで指定したデータ ソース以外のデータ ソースを指定する方法については、『MFC リファレンス』の「CDatabase::OpenEx」または「CDatabase::Open」を参照してください。
データ ソースとの接続の終了
CDatabase のメンバー関数 Close を呼び出す前に、開いているすべてのレコードセットを閉じます。 閉じようとしている CDatabase オブジェクトに関連付けられているレコードセットでは、保留中の AddNew ステートメントまたは Edit ステートメントはキャンセルされ、保留中のすべてのトランザクションはロールバックされます。
データ ソースとの接続を終了するには
CDatabase オブジェクトのメンバー関数 Close を呼び出します。
再利用しない場合にはオブジェクトを破棄します。
CDatabase オブジェクトの再利用
接続を終了した後で CDatabaseオブジェクトを再利用できます。再利用時の接続先は、同じデータ ソースでも別のデータ ソースでもかまいません。
CDatabase オブジェクトを再利用するには
オブジェクトの元の接続を閉じます。
オブジェクトを破棄せずに、そのメンバー関数の OpenEx または Open を再度呼び出します。