CDatabase::OpenEx
更新 : 2007 年 11 月
新しく構築した CDatabase オブジェクトを初期化します。
virtual BOOL OpenEx(
LPCTSTR lpszConnectString,
DWORD dwOptions = 0
);
パラメータ
lpszConnectString
ODBC 接続文字列を指定します。この接続文字列には、データ ソース名のほかに、ユーザー ID やパスワードなどのオプション情報も含まれます。たとえば、"DSN=SQLServer_Source;UID=SA;PWD=abc123" のような接続文字列を指定できます。lpszConnectString に NULL を渡すと、データソースを選択するダイアログ ボックスが表示され、ユーザーがデータ ソースを選択できるようになります。dwOptions
次に示す値の組み合わせを指定するビットマスク。既定値は 0 です。この値は、データベースが書き込みアクセス可能な共有モードで開かれ、ODBC カーソル ライブラリ DLL が読み込まれないことを示します。また、接続を確立するための情報が不足している場合だけ ODBC 接続のダイアログ ボックスが表示されます。CDatabase::openExclusive このバージョンのクラス ライブラリではサポートされません。データ ソースは、常に共有 (非排他的) モードで開かれます。現在、このオプションを指定するとアサーションは失敗します。
CDatabase::openReadOnly データ ソースを読み取り専用で開きます。
CDatabase::useCursorLib ODBC カーソル ライブラリ DLL を読み込みます。カーソル ライブラリは、基になる ODBC ドライバの機能をいくつかマスクし、ドライバがダイナセットをサポートする場合でも、ダイナセットを使用できないようにします。カーソル ライブラリが読み込まれた場合は、静的なスナップショットと前方スクロール専用のカーソルだけがサポートされます。レコードセット オブジェクトを CRecordset から派生させずに、CRecordset から直接作成する場合は、カーソル ライブラリを読み込まないようにしてください。
CDatabase::noOdbcDialog 必要な情報が提供されているかどうかにかかわらず、ODBC 接続のダイアログ ボックスを表示しません。
CDatabase::forceOdbcDialog ODBC 接続のダイアログ ボックスを常に表示します。
戻り値
正常に接続が確立した場合は 0 以外を返します。詳細な接続情報の入力を求めるダイアログ ボックスが表示されたときに、ユーザーが [キャンセル] を選択した場合は 0 を返します。その他の場合は、フレームワークが例外をスローします。
解説
データベース オブジェクトを使用してレコードセット オブジェクトを構築するには、その前にデータベース オブジェクトを初期化する必要があります。
OpenEx 呼び出しの lpszConnectString パラメータに、接続を確立するために必要な情報が不足している場合、ODBC ドライバは、ユーザーから必要な情報を取得するためにダイアログ ボックスを開きます。ただし、dwOptions パラメータに CDatabase::noOdbcDialog または CDatabase::forceOdbcDialog が設定されている場合は、ダイアログ ボックスは開きません。OpenEx を呼び出したときに、指定した接続文字列 lpszConnectString が CDatabase オブジェクトにプライベートに格納され、GetConnect メンバ関数を呼び出すことによって利用できるようになります。
必要に応じて、OpenEx を呼び出す前に独自のダイアログ ボックスを開いてユーザーからパスワードなどの情報を取得し、それらの情報を OpenEx に渡される接続文字列に追加できます。また、OpenEx に渡した文字列を、アプリケーションによって次に CDatabase オブジェクトの OpenEx が呼び出されるときに再利用できるように保存しておくこともできます。
CDatabase オブジェクトごとに複数のログイン承認レベルを設定したり、データ ソース特有のほかの情報を通知したりするために、接続文字列を使用することもできます。接続文字列の詳細については、『ODBC Programmer's Reference』の第 6 章を参照してください。
たとえば、DBMS ホストが利用できない場合などに、接続に失敗することがあります。接続に失敗すると、OpenEx は CDBException をスローします。
使用例
// m_dbCust is a CDatabase object embedded in a CDocument class.
// Connect the object to a read-only data source where
// the ODBC connection dialog box will always remain hidden
m_dbCust.OpenEx(_T("DSN=MFC_ODBCTest;UID=JOES"),
CDatabase::openReadOnly | CDatabase::noOdbcDialog);
必要条件
ヘッダー : afxdb.h