データアクセス手法 |
WindowsプラットフォームでRDBMS(非RDBMS)にアクセスする手法には、さまざまな手法があり(ありすぎ!)、どれを使えば良いか混乱するときがあります。ここでは、それぞれの手法の特徴とメリット、デメリットを記述し、アクセス手法の選定基準となるもの示します。なお、データベースエンジンの選定基準は、こちらのページを参照してください。
以下に示すもの以外にもOLE DBとかありますが、データベース以外のもの向けに開発され、直接操作するのではなくADO経由でアクセスするほうが主流になった経緯があるので割愛します。また、ADOの少ない機能を補完するADOX(Microsoft ADO Extensions for DDL and Security:ADOでDDLを使えるようにするためのもの), JRO(Microsoft Jet and Replication Objects:ADOにレプリカ機能を追加したもの)もあります。
用件 | ODBC | DAO | RDO | ADO |
---|---|---|---|---|
TARGET言語 | C/C++ | VB, Office | VB, Office | VB, Office, ASP |
実装された歴史 | 1 | 2 | 3 | 4 |
対象データソース | ODBC ドライバに対応したローカルまたはリモートのデータ ソース | JET(*.mdb), JET(RDBMS), その他 | RDBMS | OLE DB Provider |
特徴 | 低レベル 汎用性あり |
単一システムのアプリケーションや小規模でローカルなネットワークで使用するのに最も適している。 MDBには、ODBCよりDAOの方が効率的。 |
SQL Server, Oracle、そのほかの大規模なリレーショナルデータベースの多くの開発者に使用されている。 | DAO/RDOを簡素化したもの。 |
将来性 | あり? | なし | なし | なし(ADO.NETに移行?) |
DDLサポート(*1) | ODBC API を直接呼び出す場合だけ可 | 可 | 可(?) | 不可(ADOXでサポート) |
DMLサポート(*1) | 可 | 可 | 可(?) | 不可(ADOXでサポート) |
DAOにもODBC Directというのがあって、JET Engineを超えて、直接ODBC Driverにアクセスすることができます。
なお、Access DB(MDB)に対してADOを利用するときは、OLE DB Providerを通してアクセスします。
データ定義言語 (DDL: Data Definition Language) | データベースの作成と削除、テーブルの作成と削除、テーブルのフィールドとインデックスの定義など、データベースの構造に影響する操作を行うことができます。 |
データ操作言語 (DML: Data Manipulation Language) | クエリの実行、レコードの追加、削除、編集など、データベースの内容を操作できます。 |
DAO と ODBC の使い分け | http://www.microsoft.com/japan/msdn/library/default.asp? url=/japan/msdn/library/ja/vccore/html/_core_should_i_use_dao_or_odbc.3f.asp |
ADO または DAO を選択して Access データベースを使用する | http://www.microsoft.com/japan/developer/library/odeopg/ deovrchoosingadoordaoforworkingwithaccessdatabases.htm |
ADO と ADO.NET の違い | http://www.datadirect.co.jp/technote/ADOvsADODOTNET.asp |
DAO と ADO どちらを選ぶ? | http://homepage2.nifty.com/inform/vbdb/daoado.htm |
INSERT INTO と AddNew どちらが速い? | http://homepage2.nifty.com/inform/vbdb/addnew.htm |
DAOとADOを比較する | http://homepage1.nifty.com/tsware/labo/labo_23.htm |
ADOの実用度は向上したのか | http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0006/ado/ |
Microsoft Access2000 評価レポート - 早期版 (1999/9/1) | http://www2p.biglobe.ne.jp/~sakurait/cstrue/cl1999/cl1999c4.html |