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