次の方法で共有


CDaoDatabase::Open

既存のデータベースを表現する新しく構築された 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 ホストが利用できない場合などに、接続に失敗することがあります。 接続に失敗すると、OpenCDaoException 型の例外をスローします。

ODBC データベースにだけ適用される解説は、次のとおりです。

データベースが ODBC データベースで、Open の呼び出しのパラメーターが、接続するのに必要な情報を満たしていない場合、ODBC ドライバーはユーザーから必要な情報を得るために、ダイアログ ボックスを開きます。 Open が呼び出されたとき、接続文字列 lpszConnect は、プライベートに格納され、GetConnect メンバー関数を呼び出して利用できるようになります。

必要に応じて、Open を呼び出す前に独自のダイアログ ボックスを開いてユーザーからパスワードなどの情報を取得し、それらの情報を Open に渡される接続文字列に追加できます。 また、渡した接続文字列を (Windows レジストリなどに) 保存すると、アプリケーションが次に CDaoDatabase オブジェクトの Open を呼び出すときに、これを再利用できます。

(異なる CDaoDatabase オブジェクトごとの) ログイン承認の複数のレベルで、またはほかのデータベース特有の情報を通知するために、接続文字列を使うこともできます。

必要条件

**ヘッダー:**afxdao.h

参照

参照

CDaoDatabase クラス

階層図

CDatabase::CDatabase

CDatabase::Close

その他の技術情報

CDaoDatabase のメンバー