CDaoDatabase::Open
更新 : 2007 年 11 月
既存のデータベースを表現する新しく構築された CDaoDatabase オブジェクトを初期化するには、この関数を呼び出す必要があります。
virtual void Open(
LPCTSTR lpszName,
BOOL bExclusive = FALSE,
BOOL bReadOnly = FALSE,
LPCTSTR lpszConnect = _T(
"" )
);
lpszName
既存の Microsoft Jet (.MDB) データベース ファイル名を示す文字列式。ファイル名に拡張子があるときは、拡張子も指定します。ネットワークが統一名前付け規約 (UNC) をサポートしているときは、"\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB.MDB" のように、ネットワーク パスも指定できます。('\' は C++ ではエスケープ文字なので、文字列リテラルには 2 つの "\" が必要です。)lpszName を使うのは、次のような場合が考えられます。
ほかのユーザーが排他アクセスを使って、既に開いているデータベースを lpszName で参照したとき、MFC は CDaoException 型の例外をスローします。例外をトラップすることで、ユーザーはデータベースが利用できないことがわかります。
lpszName が空の文字列 ("") で、lpszConnect が "ODBC;" のときは、登録されているすべての ODBC データ ソースの一覧を持つダイアログ ボックスが表示されるため、ユーザーは、データベースを選択できます。ODBC データ ソースへの直接接続を避けて、その代わりにアタッチ テーブルを使用してください。
それ以外の lpszName で、既存のデータベース、または有効な ODBC データ ソース名を参照していない場合には、MFC は CDaoException 型の例外をスローします。
メモ : DAO エラー コードの詳細については、DAOERR.H ファイルを参照してください。関連情報については、DAO ヘルプの「Trappable Data Access Errors」を参照してください。
bExclusive
データベースを排他 (非共有) アクセスで開くときは TRUE を、共有アクセスで開くときは FALSE を指定するブール値。この引数を省略すると、データベースは共有モードで開かれます。bReadOnly
データベースを読み込み専用アクセスで開くときは TRUE を、読み書き両用アクセスで開くときは FALSE を指定するブール値。この引数を省略すると、データベースは読み書き両用アクセスで開かれます。このメンバ関数に依存するすべてのレコードセットは、この属性を継承します。lpszConnect
データベースを開くのに使う文字列式。この文字列は、ODBC 接続の引数を構成します。ソース文字列を用意するには、排他と読み込み専用の引数を渡す必要があります。データベースが Microsoft Jet データベース (.MDB) のときは、この文字列は空 ("") です。既定値の構文 (_T ("")) には、アプリケーションの ANSI ビルドと同じ Unicode に対する移植性が用意されています。
Open は、データベースを基になる DAO オブジェクトに関連付けます。このデータベース オブジェクトは初期化されるまで、レコードセット、テーブル定義、クエリ定義オブジェクトを構築するために使うことはできません。Open は、データベース オブジェクトを関連付けられたワークスペースの Database s コレクションに追加します。
パラメータの使い方は次のとおりです。
Microsoft Jet (.MDB) データベースを開くときは、パラメータ lpszName を使い、パラメータ lpszConnect には空の文字列 ("") を渡すか、または、データベースがパスワード保護されている (.MDB データベースのみ) 場合、";PWD=password" の形式のパスワード文字列を渡します。
ODBC データ ソースを開くときは、lpszConnect には有効な ODBC 接続文字列を、lpszName には空の文字列を渡します。
関連情報については、DAO ヘルプの「OpenDatabase Method」を参照してください。
メモ : |
---|
ISAM データベース、ODBC データ ソースを含む、外部データベースへのアクセス時のパフォーマンスを向上させるには、データ ソースに直接接続するのではなく、Microsoft Jet エンジン データベース (.MDB) に外部データベース テーブルを関連付けることをお勧めします。 |
たとえば、DBMS ホストが利用できない場合などに、接続に失敗することがあります。接続に失敗すると、Open は CDaoException 型の例外をスローします。
ODBC データベースにだけ適用される解説は、次のとおりです。
データベースが ODBC データベースで、Open の呼び出しのパラメータが、接続するのに必要な情報を満たしていない場合、ODBC ドライバはユーザーから必要な情報を得るために、ダイアログ ボックスを開きます。Open が呼び出されたとき、接続文字列 lpszConnect は、プライベートに格納され、GetConnect メンバ関数を呼び出して利用できるようになります。
必要に応じて、Open を呼び出す前に独自のダイアログ ボックスを開いてユーザーからパスワードなどの情報を取得し、それらの情報を Open に渡される接続文字列に追加できます。また、渡した接続文字列を (Windows レジストリなどに) 保存すると、アプリケーションが次に CDaoDatabase オブジェクトの Open を呼び出すときに、これを再利用できます。
(異なる CDaoDatabase オブジェクトごとの) ログイン承認の複数のレベルで、またはほかのデータベース特有の情報を通知するために、接続文字列を使うこともできます。
ヘッダー : afxdao.h