CDaoDatabase クラス
更新 : 2007 年 11 月
それを通じてデータを操作することのできるデータベースへの接続を表します。
class CDaoDatabase : public CObject
解説
サポートされるデータベース形式については、GetName メンバ関数を参照してください。CDaoWorkspace オブジェクトで表現される特定の "ワークスペース" 上に、1 つ以上のアクティブな CDaoDatabase オブジェクトを同時に持つことができます。ワークスペースは、Databases コレクションと呼ばれる、開かれているデータベース オブジェクトのコレクションを管理します。
メモ : |
---|
MFC DAO データベース クラスは、ODBC に基づく MFC データベース クラスとは異なるものです。すべての DAO データベース クラス名には、"CDao" というプリフィックスが付きます。CDaoDatabase クラスは、ODBC クラス CDatabase と同じインターフェイスが用意されています。主な違いは、CDatabase は ODBC (Open Database Connectivity) と、DBMS 用の ODBC ドライバを使って DBMS にアクセスすることです。CDaoDatabase は、Microsoft Jet データベース エンジンを基にしたデータ アクセス オブジェクト (DAO: Data Access Object) を使ってデータにアクセスします。一般的に、DAO を基にした MFC クラスは、ODBC を基にした MFC クラスよりも多くの機能を持っています。DAO ベースのクラスは、ODBC ドライバを使ってアクセスできるのに加え、独自のデータベース エンジンを使ってもデータにアクセスできます。DAO を基にしたクラスは、DAO を直接呼び出さずにクラスを経由してテーブルを追加するなどの DDL (Data Definition Language) 操作をサポートします。 |
使用方法
レコードセット オブジェクトを作成するときに、暗黙的にデータベース オブジェクトを作成できます。また、明示的にデータベース オブジェクトを作成することもできます。CDaoDatabase で既存のデータベースを明示的に使用するには、次のどちらかを行います。
開いている CDaoWorkspace オブジェクトのポインタを渡して、CDaoDatabase オブジェクトを構築します。
または、ワークスペースを指定せずに、CDaoDatabase オブジェクトを構築します。MFC が一時的なワークスペース オブジェクトを作成します。
新しい Microsoft Jet (.MDB) データベースを作成するには、CDaoDatabase オブジェクトを構築し、Create メンバ関数を呼び出します。Create の呼び出し後に Open を呼び出さないでください。
既存のデータベースを開くには、CDaoDatabase オブジェクトを構築し、Open メンバ関数を呼び出します。
どちらの場合も、DAO データベース オブジェクトをワークスペースの Databases コレクションに追加し、データとの接続を開きます。そして、接続されたデータベースで操作するため、CDaoRecordset、CDaoTableDef、または CDaoQueryDef オブジェクトを構築するときに、これらのオブジェクトのコンストラクタに CDaoDatabase オブジェクトへのポインタを渡します。接続を終了するときは、Close メンバ関数を呼び出して CDaoDatabase オブジェクトを破棄します。Close メンバ関数は、閉じられていないレコードセットをすべて閉じます。
トランザクション
データベース トランザクション処理は、ワークスペース レベルで用意されます。CDaoWorkspace クラスの BeginTrans メンバ関数、CommitTrans メンバ関数、および Rollback メンバ関数を参照してください。
ODBC 接続
ODBC データ ソースを使った作業で、Microsoft Jet (.MDB) データベースに外部テーブルを結び付ける方法をお勧めします。
コレクション
各データベースは、データベース自身が所有するテーブル定義、クエリ定義、レコードセット、リレーションシップ オブジェクトのコレクションを管理しています。CDaoDatabase クラスには、これらのオブジェクトを操作するメンバ関数が用意されています。
メモ : |
---|
オブジェクトは、MFC データベース オブジェクトではなく、DAO に格納されます。MFC には、テーブル定義、クエリ定義、およびレコードセットのオブジェクト クラスは用意されていますが、リレーションシップ オブジェクト クラスは用意されていません。 |
必要条件
ヘッダー : afxdao.h