DAOとADOについて ~ Access でDBに接続する方法 ~

Access

こんにちは、じじグラマーのカン太です。
動画サイトの誘惑に負け続けながらも、週末プログラマーをしています。

Accessでの開発を請け負ったのですが、DBへの接続方法について気になることがあったので調べてみました。

ちょっと情報が古かもしれませんが、気になる方はご参考までに。

データベースへの接続

Accessではクエリやフォームなどが充実しているので、VBAなしでもある程度使えるのですが、ちょっと複雑な処理なんかはやっぱりSQLを使う必要があります。

VBAからデータベースへ接続する方法ですが、大きく二つあります。
「DAO」と「ODA」です。

DAO ⇒ Data Access Object  の略
ADO ⇒ ActiveX Data Object の略

僕がAccessを触り始めたころ(ずいぶん昔にことですが)は「DAO」しかありませんでした。しばらく(数年?)たったころ「ADO」なるものがあらわれ、「DAO」は古い、遅いなんて言われていたものです。

結局のところどうなの?というところを、調べてみました。

DAO(Data Access Obiect)

DAOとは、MS Access固有のデータベースエンジンである「Jetデータベースエンジン」(.accdbや.mdbファイル)へのアクセスに特化したデータアクセス方法です。

初期のころから使われていて、Accessのバージョンアップとともに、DAOもバージョンアップを繰り返してきたそうです。僕の記憶違いではなかったみたいです。

Access2007 より前のバージョンでは、参照設定でDAOを選んでやらないと使えなかったのですが、2007以降はデフォルトで使えるようになっています。MicrosoftもDAO押しになってきたのでしょうか。

ADO(ActiveX Data Objects)

ADOとは、MS Access2000から採用された、データアクセス方法です。

「OLE DBプロバイダ」という仕組みを介して、Accessデータベースはもちろん、SQL ServerやOracleなどのデータベースエンジンにアクセスします。なんだかよくわかりませんが、Access以外のデータベースへも接続が可能となるものらしいです。

DAOとADOどちらを使うべき?

DAOとADOの歴史みたいなものを調べてみると、ADOが登場したころは「DAOはもうオワコン」「これからはADO」みたいな風潮があったみたいです。実際、処理速度もADOの方が速かったようです。

しかし、DAOもバージョンアップを繰り返し、2007から既定になったこともあり、AccessデータベースにはDAO、以外のデータベースにはADO、というすみわけみたいなようなものができたみたいです。

パソコンの処理能力が飛躍的に向上したので、細かいレスポンスの違いなどは発生しなくなったのかもしれませんね。

リンクしてしまえば、DAOであってもAccess以外のデータベースへ接続可能なので、僕は今のとことDAOで開発を進めています。

まとめ

いかがでしたでしょうか。DAOとODA、日本語では逆さ言葉のようでまぎらわしいですが、どちらを使っても大して問題はなさそうです。

結局、使い慣れたものを使えばいい、という結論に達しました。

なので僕は当分浮気はせずに、DAOのみ使わせてもらおうかなと考えています。
気が変わったらまたご報告します。

コメント