「ADO」「DAO」「ODBCDirect」は、いずれもMicrosoftのデータベースアクセス技術です。それぞれの設計目的や使用方法に違いがあり、どれを使用すればよいのか迷います。
使用用途によって、どれを使用すればよいかをまとめてみました。
レコードセット「ADO」とは
概要:
- ActiveX Data Objectsの略
- DAOやODBCDirectの後継として、OLE DBベースの柔軟なデータアクセス技術として利用されています。
- Access 2000以降で主に使用されています。
特徴:
- 様々な種類のデータベース(SQL Server、Oracle、Excelなど)と接続が可能で便利です。
- OLE DBやODBCを内部で使用します。
- クライアント/サーバー環境で効率的に動作します。
長所:
- 多種多様なデータソースに対応可能。
- 高速かつ柔軟。
- DAOよりもモダンなインターフェース。
短所:
- DAOと比較して学習コストが若干高いです。
- レコードセット操作の文法がDAOと異なるため、移行に手間がかかることがあります。
レコードセット「DAO」とは
概要:
- Data Access Objectsの略
- AccessやJetデータベースエンジンに最適化された古い技術です。
- Access 97~2003でよく使われていました。
特徴:
- Jet データベース(.mdb)に対して高パフォーマンスを発揮します。
- テーブル定義やリレーションなど、データベース構造にもアクセス可能です。
- Access VBAとの親和性が高いです。
長所:
- Jetに最適化されており、Accessアプリケーション内では非常に高速で処理されます。
- シンプルなローカルデータベース用途に適しています。
短所:
- リモートのSQL Serverなどに直接アクセスするのには向いていないです(ODBC経由では遅くなります)。
レコードセット「ODBCDirect」とは
概要:
- DAOの一部として導入された技術です。
- Jetエンジンをバイパスして、ODBC経由で直接リモートデータベースにアクセスします。
特徴:
- Jetエンジンを経由せず、ODBC経由でSQL ServerやOracleなどに直接接続します。
- DAOの構文をそのまま使いながらも、パフォーマンス向上が可能です。
長所:
- DAOコードを大きく変えずにODBCリモート接続ができます。
- Jetを通さないので、Jetの制限を受けにくいです。
短所:
- 将来性がありません(Access 2007以降では非推奨)。
- ADOやOLE DBに比べて機能面で劣ります。
まとめ
レコードセット | 発表時期 | 使用エンジン | 対象DB | 推奨状況 | パフォーマンス |
---|---|---|---|---|---|
ADO | 新しい(Access 2000以降) | OLE DB / ODBC | 様々(OLE DB経由) | 現在も推奨される | リモート接続に優秀 |
DAO | 古い(Access 2.0〜) | Jet | Jetベース(.mdb) | 古いがまだ使用可 | Jetに最適 |
ODBCDirect | DAO拡張(Access 97頃) | なし(ODBC直結) | SQL ServerなどのODBC | 廃止・非推奨 | リモート接続に適 |
ODBCDirectについては、ACCESSのバージョンによっても利用できないことがあるので、これから開発を考えている人は使用しないほうがよいでしょう。
Access MDBでローカルを中心に開発をする場合はDAOでもよいかもしれませんが、様々なデータベースに接続する環境での開発はADOをおすすめします。
もし、すでにODBCDirectやDAOで開発されている方は、ADOへの移行を進めていったほうが良いですね。