DAO と ODBC の使い分け
[!メモ]
Visual C++ .NET では、Visual C++ 開発環境およびウィザードでは DAO はサポートされなくなりました (DAO クラスは含まれているので、このクラスを使うことはできます)。新規プロジェクトの作成には、[OLE DB テンプレート] または [ODBC] の使用をお勧めします。DAO は、既存のアプリケーションを保守するためだけに使用してください。
DAO と ODBC のどちらの MFC クラスを使うかは、ニーズに応じて異なります。
ODBC クラスは、ODBC データ ソースだけを使う場合に適しています。特に、MFC ODBC によってパフォーマンスが向上するクライアント サーバー環境で使います。
DAO クラスは、主に Microsoft Jet (.mdb) データベース、または Microsoft Jet データベース エンジンで直接読み込むことができる他のデータベース形式を使用する場合に使用します。これらのデータベース形式については、「DAO と ODBC を使ってアクセスできるデータ ソース」を参照してください。
Microsoft Jet データベース エンジンの速度を上げたり、DAO クラスの付加機能を使用したりするには、DAO クラスを経由して ODBC データ ソースにアクセスします。
[!メモ]
DAO を使用する場合は、ハード ディスクの容量を増やす必要があります。
DAO クラスには、以下の利点があります。
主に Microsoft Jet (.mdb) データベースを使用する場合などにパフォーマンスが優れている。
ODBC クラス、Microsoft Access Basic、Microsoft Visual Basic との互換性がある。
検証規則にアクセスできる。
テーブル間の関係を指定できる。
データ アクセス モデルがより充実している。たとえば、DAO クラスはデータ定義言語 (DDL: Data Definition Language) やデータ操作言語 (DML: Data Manipulation Language) をサポートしています。詳細については、「DDL および DML のサポート」を参照してください。
主な相違点を次の表に示します。この表に基づいてクラスを選択してください。
MFC の DAO クラスと ODBC クラスの使い分け
項目 |
DAO クラスの場合 |
ODBC クラスの場合 |
---|---|---|
.MDB ファイルにアクセスする |
○ |
○ |
ODBC データ ソースにアクセスする |
○ |
○ |
16 ビットで使用できる |
X |
○ |
32 ビットで使用できる |
○ |
○ |
64 ビットで使用できる |
X |
○ |
データベースの圧縮 |
○ |
X |
データベース エンジンのサポート |
Microsoft Jet データベース エンジン |
対象の DBMS |
DDL サポート |
○ |
ODBC を直接呼び出す場合だけ可 |
DML サポート |
○ |
○ |
MFC への実装形態 |
DAO コア関数の "ラップ" クラス |
ODBC API の "ラップ" ではなく、簡略化された抽象クラス |
最適な用途 |
.MDB ファイル (Microsoft Access) |
対応するドライバーがある DBMS (クライアント サーバー状況内を主とする) |
トランザクションのサポート |
ソリューション単位 (ODBC データの場合はデータベース単位) |
データベース単位 |
なお、ODBC ドライバーの機能はそれぞれ異なることを忘れないでください。詳細については、『ODBC Programmer's Reference』と各 ODBC ドライバーのヘルプ ファイルを参照してください。