次の方法で共有


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 型の例外をスローします。

    fdc3s3d8.alert_note(ja-jp,VS.90).gifメモ :

    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」を参照してください。

fdc3s3d8.alert_note(ja-jp,VS.90).gifメモ :

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 のメンバ