CDaoWorkspace クラス
更新 : 2007 年 11 月
シングル ユーザーによる名前付きの、パスワードで保護されたデータベース セッションのログインからログオフまでを管理します。
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 コレクションへのアクセス。このコレクションには、追加されたすべてのアクティブなワークスペースが格納されます。また、このコレクションに追加せずにワークスペースを作成し、作業することもできます。
セキュリティ
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