【ACCESS】レコードセットの「ADO」「DAO」「ODBCDirect」って何?どれを使えばいいの?

ACCESS

「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〜)JetJetベース(.mdb)古いがまだ使用可Jetに最適
ODBCDirectDAO拡張(Access 97頃)なし(ODBC直結)SQL ServerなどのODBC廃止・非推奨リモート接続に適

ODBCDirectについては、ACCESSのバージョンによっても利用できないことがあるので、これから開発を考えている人は使用しないほうがよいでしょう。

Access MDBでローカルを中心に開発をする場合はDAOでもよいかもしれませんが、様々なデータベースに接続する環境での開発はADOをおすすめします

もし、すでにODBCDirectやDAOで開発されている方は、ADOへの移行を進めていったほうが良いですね。

タイトルとURLをコピーしました