DAO、ADO、ODBC、OLE DBの違いを簡単にまとめる

Database Database

AccessでVBAをコーディングしていて気になった用語(↓)があったので、簡単に意味や差異をまとめました。

  • DAO
  • ADO
  • ODBC
  • OLE DB
目次

DAO

一般的な意味ではDAO (Database Access Object)はデータベースへの接続を抽象化する仕組みだけど、Accessに関しては、Access VBAで標準的に(恐らく)使用されるDBアクセスのための仕組み・オブジェクトのこと。
特に追加の参照設定をしなくても、使用可能。

Access内部のテーブルに対しても、リモートDBに対しても使用可能(リモートDBはODBCで接続)。

ただ、後続の規格であるADOのほうがパフォーマンス面では良いらしい。※1

※1 Microsoft ActiveX データ オブジェクト リファレンス

ADO

ADO (ActiveX Data Objects)はデータベース接続・操作のためのCOMオブジェクト。
(COMオブジェクトはVisual Basic (VBAも含む)で使用される部品のこと)
上記DAOの※1のリンクにもあるように、パフォーマンス面では良いらしい(DAOとの比較には言及していないが)。

 ADO の主な利点は、使用が簡単で、高速に動作し、メモリのオーバーヘッドが小さく、ディスクの使用量が少ないことです。 ADO では、クライアント/サーバー アプリケーションおよび Web ベース アプリケーションを構築するための重要な機能がサポートされています。

https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/microsoft-activex-data-objects-reference

ADOはOLE DBを使用してDBにアクセスする(OLE DBについては後述)。

Accessで使用するには追加で参照設定を行う必要あり。

ADOの参照設定方法

データベース→Visual Basicを開き、

ツール→参照設定で、「Microsoft ActiveX Data Objects 6.1 Library」にチェックしてOK。

以下の画像の通り。

ADO Setting

ODBC

関係データベース(RDMS)への統一的なアクセス方法を提供するインタフェース(ないしAPI)で、Microsoftの独自仕様ではない(後述するOLE DBはMicrosoftの独自仕様)。
ここでも書かれているけど、業界標準はODBCらしい。

要するに、個々のデータベース製品固有の違いを吸収してくれる仕組み。

ODBCは、Open Database Connectivityの略。

参考サイト

OLE DB

OLE自体は、Windowsにおいて複数のアプリケーションでデータを共有する仕組み(詳細はここで説明されています)。

Microsoftの独自規格で、DBへのアクセスを抽象化するアーキテクチャー。

ODBCにのみ対応しているDB製品に対しては、「Microsoft OLE DB Provider for ODBC」を仲介させる。

参考サイト

 

以上です。