CDatabase::Open
新しく構築した CDatabase オブジェクトを初期化します。
virtual BOOL Open(
LPCTSTR lpszDSN,
BOOL bExclusive = FALSE,
BOOL bReadOnly = FALSE,
LPCTSTR lpszConnect = _T("ODBC;"),
BOOL bUseCursorLib = TRUE
);
パラメーター
lpszDSN
データ ソース名を指定します。この名前は、ODBC データ ソース アドミニストレーターを使用して ODBC に登録されている名前です。 DSN 値を lpszConnect で指定している場合 (形式は "DSN= <data-source>") は、同じ値を lpszDSN で繰り返し指定しないようにしてください。 この場合は、lpszDSN に NULL を指定します。 また、ユーザーがデータ ソースを選択できるように、ダイアログ ボックスを表示する場合も NULL を渡します。 詳細については、後の「解説」を参照してください。bExclusive
このバージョンのクラス ライブラリではサポートされていません。 現在、このパラメーターを TRUE に設定すると、アサーションは失敗します。 データ ソースは、常に共有 (非排他的) モードで開かれます。bReadOnly
接続を読み取り専用にする場合や、データ ソースの更新を禁止する場合は TRUE に設定します。 このメンバー関数に依存するすべてのレコードセットは、この属性を継承します。 既定値は FALSE です。lpszConnect
接続文字列を指定します。 接続文字列は、データ ソース名、データ ソースで有効なユーザー ID、ユーザー認証文字列 (データ ソースにパスワードが必要な場合はパスワード)、その他の情報をつなげた文字列です。 接続文字列の先頭には、必ず "ODBC;" (大文字または小文字) を付ける必要があります。 "ODBC;" 文字列は、接続先が ODBC データ ソースであることを示すために使用します。これは、クラス ライブラリの将来のバージョンで ODBC 以外のデータ ソースがサポートされる場合に備え、上位互換性維持のために用意されています。bUseCursorLib
ODBC カーソル ライブラリ DLL を読み込む場合は TRUE に設定します。 カーソル ライブラリは、基になる ODBC ドライバーの機能をいくつかマスクし、ドライバーがダイナセットをサポートする場合でも、ダイナセットを使用できないようにします。 カーソル ライブラリが読み込まれた場合は、静的なスナップショットと前方スクロール専用のカーソルだけがサポートされます。 既定値は TRUE です。 レコードセット オブジェクトを CRecordset から派生させずに、CRecordset から直接作成する場合は、カーソル ライブラリを読み込まないようにしてください。
戻り値
正常に接続が確立した場合は 0 以外を返します。詳細な接続情報の入力を求めるダイアログ ボックスが表示されたときに、ユーザーが [キャンセル] を選択した場合は 0 を返します。 その他の場合は、フレームワークが例外をスローします。
解説
データベース オブジェクトを使用してレコードセット オブジェクトを構築するには、その前にデータベース オブジェクトを初期化する必要があります。
注意
データ ソースに接続し、データベース オブジェクトを初期化する場合は、OpenEx メンバー関数を呼び出す方法をお勧めします。
Open を呼び出すときに指定したパラメーターに、接続に必要な情報が不足していた場合、ODBC ドライバーは、ユーザーから必要な情報を取得するために、ダイアログ ボックスを表示します。 Open を呼び出したときに、指定した接続文字列 lpszConnect が CDatabase オブジェクトにプライベートに格納され、GetConnect メンバー関数を呼び出すことによって利用できるようになります。
必要に応じて、Open を呼び出す前に独自のダイアログ ボックスを開いてユーザーからパスワードなどの情報を取得し、それらの情報を Open に渡される接続文字列に追加できます。 また、Open に渡した文字列を、アプリケーションによって次に CDatabase オブジェクトの Open が呼び出されるときに再利用できるように保存しておくこともできます。
CDatabase オブジェクトごとに複数のログイン承認レベルを設定したり、データ ソース特有のほかの情報を通知したりするために、接続文字列を使用することもできます。 接続文字列の詳細については、Windows SDK の第 5 章を参照してください。
たとえば、DBMS ホストが利用できない場合などに、接続に失敗することがあります。 接続に失敗すると、Open は CDBException をスローします。
使用例
// m_dbCust is a CDatabase object embedded in a CDocument class
if (bDefault)
{
// Connect the object to a data source (no password)
// the ODBC connection dialog box will always remain hidden
m_dbCust.Open(_T("MFC_ODBCTest"), FALSE, FALSE, _T("ODBC;UID=JOES"));
}
else
{
// ...Or, query the user for all connection information
m_dbCust.Open(NULL);
}
必要条件
**ヘッダー:**afxdb.h