次の方法で共有


CDaoWorkspace クラス

更新 : 2007 年 11 月

シングル ユーザーによる名前付きの、パスワードで保護されたデータベース セッションのログインからログオフまでを管理します。

class CDaoWorkspace : public CObject

解説

ほとんどの場合、複数のワークスペースを必要としないので、明示的にワークスペース オブジェクトを作成する必要もありません。データベースやレコードセット オブジェクトを開くときは、DAO の既定のワークスペースを使用します。ただし、必要に応じて別のワークスペース オブジェクトを作成して、同時に複数のセッションを実行することもできます。各ワークスペース オブジェクトが所有する Databases コレクションに、複数の開いたデータベース オブジェクトを持つことができます。MFC では、ワークスペースは主に、同じ "トランザクション空間" にあるすべての開かれているデータベースの集約を指定するトランザクション マネージャです。

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

DAO データベース クラスは、オープン データベース コネクティビティ (ODBC: Open Database Connectivity) に基づいている MFC データベース クラスとは性質が異ります。すべての DAO データベース クラスの名前は、プリフィックス "CDao" で始まります。通常、DAO に基づく MFC クラスは、ODBC に基づく MFC クラスよりも柔軟性があります。DAO を基にしたクラスは、ODBC ドライバを含め、Microsoft Jet データベース エンジンを使用してデータにアクセスできます。また、DAO を直接呼び出す代わりに、クラスを使用してテーブルやフィールドの作成、追加などができる、データ定義言語 (DDL: Data Definition Language) 操作もサポートします。

機能

CDaoWorkspace クラスには、次の機能が用意されています。

  • データベース エンジンを初期化することによって作成された既定のワークスペースへの、必要に応じた明示的なアクセス。通常、DAO の既定のワークスペースは、データベースやレコードセット オブジェクトを作成することにより暗黙的に使用します。

  • ワークスペースで開かれているすべてのデータベースにトランザクションが適用されるトランザクション空間。別のトランザクション空間を管理するため、別のワークスペースを作成できます。

  • 基になる Microsoft Jet データベース エンジンの多くのプロパティへのインターフェイス (静的メンバ関数を参照)。ワークスペースを開くまたは作成する、あるいはその前に静的メンバ関数を呼び出し、データベース エンジンを初期化します。

  • データベース エンジンの Workspaces コレクションへのアクセス。このコレクションには、追加されたすべてのアクティブなワークスペースが格納されます。また、このコレクションに追加せずにワークスペースを作成し、作業することもできます。

セキュリティ

MFC は、DAO の Users コレクションおよび Groups コレクションを実装していません。これらのコレクションはセキュリティ コントロールに使用されます。DAO のこの機能が必要なときは、DAO インターフェイスを直接呼び出して、自分自身でこの機能をプログラムする必要があります。詳細については、「テクニカル ノート 54: MFC DAO クラス使用中の DAO の直接呼び出し」を参照してください。

使用法

CDaoWorkspace クラスは、次のように使用できます。

  • 既定のワークスペースを明示的に開きます。

    通常、既定のワークスペースは、新しい CDaoDatabase オブジェクトまたは CDaoRecordset オブジェクトを開くときに暗黙的に使用されます。しかし、明示的なアクセスが必要な場合もあります。たとえば、データベース エンジンのプロパティや Workspaces コレクションなどにアクセスするときなどです。以下の「既定のワークスペースの暗黙的使用」を参照してください。

  • 新しいワークスペースを作成します。Workspaces コレクションに追加するときは、Append を呼び出します。

  • Workspaces コレクションの既存のワークスペースを開きます。

Workspaces コレクションに存在しない新しいワークスペースの作成については、Create メンバ関数で説明します。データベース エンジンのセッションを通して、ワークスペース オブジェクトを適用する方法はありません。アプリケーションが MFC を静的にリンクしていると、アプリケーションが終了してもデータベース エンジンは初期化されません。アプリケーションが MFC を動的にリンクしていると、MFC DLL がアンロードされてもデータベース エンジンは初期化されません。

明示的に既定のワークスペースを開く方法、または Workspaces コレクション内にある既存のワークスペースを開く方法の詳細については、Open メンバ関数を参照してください。

Close メンバ関数でワークスペースを閉じて、ワークスペースのセッションを終了させます。Close は、閉じられていないデータベースを閉じ、コミットされていないトランザクションをロールバックします。

トランザクション

DAO は、ワークスペース レベルでトランザクションを管理します。そのため、複数のデータベースが開かれているワークスペースでのトランザクションは、すべてのデータベースに適用されます。たとえば、2 つのデータベースにコミットされていない更新があり、CommitTrans を呼び出すと、すべての更新がコミットされます。1 つのデータベースに限定したトランザクションが必要なときは、そのための別のワークスペース オブジェクトが必要です。

既定のワークスペースの暗黙的使用

MFC は、次の条件のときに DAO の既定のワークスペースを暗黙的に使用します。

  • 新しい CDaoDatabase オブジェクトを作成しても既存の CDaoWorkspace オブジェクトを介さない場合、MFC は DAO の既定のワークスペースに対応する一時的なワークスペース オブジェクトを作成します。複数のデータベースに同じことを行うと、すべてのデータベース オブジェクトが既定のワークスペースに関連付けられます。CDaoDatabase のデータ メンバを使用して、データベースのワークスペースにアクセスできます。

  • 同じように、CDaoDatabase オブジェクトを指すポインタを渡さずに CDaoRecordset オブジェクトを作成すると、MFC は一時的なデータベース オブジェクトを作成し、拡張子により、一時的なワークスペース オブジェクトを作成します。CDaoRecordset のデータ メンバを使用して、レコードセットのデータベースや、間接的にそのワークスペースにアクセスできます。

その他の操作

破損したデータベースの修復や、データベースの再構成などのような、その他のデータベース操作も実行できます。

DAO の直接呼び出しおよび DAO セキュリティの詳細については、「テクニカル ノート 54: MFC DAO クラス使用中の DAO の直接呼び出し」を参照してください。

必要条件

ヘッダー : afxdao.h

参照

参照

CObject クラス

階層図

CDaoDatabase クラス

CDaoRecordset クラス

CDaoTableDef クラス

CDaoQueryDef クラス

CDaoException クラス

その他の技術情報

CDaoWorkspace のメンバ