次の方法で共有


CDaoWorkspace クラス

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

class CDaoWorkspace : public CObject

解説

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

注意

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 コレクションへのアクセス。このコレクションには、追加されたすべてのアクティブなワークスペースが格納されます。 また、このコレクションに追加せずにワークスペースを作成し、作業することもできます。

Security

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