ActiveX Data Objects (ADO) は、Microsoft の最高峰のデータ アクセス テクノロジです。ADO とそのパートナーである OLE DB は、あらゆるデータ アクセスに対応する Microsoft 推奨ソリューションです。ADO は、リレーショナル データベース、非リレーショナル データベース、電子メール システム、ファイル システム、テキスト データ、グラフィック データ、カスタム ビジネス オブジェクト、既存の ODBC データ ソースなど、あらゆる OLE DB データ プロバイダへの使いやすいアプリケーション レベルのインターフェイスとして設計されています。企業全体で利用可能なほぼすべてのデータに ADO テクノロジを使用してアクセスできるため、多くのアプリケーションで ADO が最適な選択肢となっています。
ADO は、リモート データ サービス (RDS) による高度なレコードセット キャッシュ管理も提供します。RDS はクライアント ワークステーション上でオプションのデータ キャッシュを提供し、クライアント側アプリケーションからサーバーへのデータ要求回数を削減することでパフォーマンスを向上させます。ADO では、切断されたレコードセット オブジェクトを非同期的に開いてデータを挿入できるため、レコードが返されている間もクライアントが他のタスクを実行できるため、パフォーマンスが向上します。
ADO オブジェクト モデル
ADO をより深く理解するには、まず ADO オブジェクト (表 A ) とオブジェクト モデル (図 A ) を確認する必要があります。
表A |
![]() |
ADO オブジェクトの名前と説明 |
図A |
![]() |
ADO オブジェクト モデル(出典: Microsoft) |
データベースに接続するには、Connectionオブジェクトで表されるデータソースへの物理的な接続を確立します。ADOはOLE DBを介してデータにアクセスします。Connectionオブジェクトは、使用するプロバイダーを指定するために使用されます。
Commandオブジェクトは、データソースに対して実行される実際のコマンドを指定するために使用されます。このコマンドは通常、ストアドプロシージャまたはSQL文を実行してデータを追加、削除、変更、または取得するために使用されます。
実行するコマンドにパラメータが必要な場合は、必ずParameterオブジェクトが使用されます。
ADO(およびDAO)のRecordsetオブジェクトは、RDOのResultsetオブジェクトに似ています。これは、データソースに対して実行されたコマンドによって返されたデータを表します。
フィールドは、レコードセット内の列を表します。データを変更する場合は、フィールドオブジェクトの値を変更します。これにより、データソース自体のデータが更新されます。
データベース操作では常にいくつかのエラーが発生する可能性があるため、Errorオブジェクトはどのようなエラーが発生したかを確認するのに役立ちます。
ADO オブジェクト プロパティは、組み込みプロパティ (オブジェクト モデルの一部であり、いつでも使用可能) または動的プロパティ (使用されるプロバイダーに応じて、プロバイダーが使用されている間のみ存在) のいずれかになります。
ADO には 4 種類のコレクションがあります。
- 1. ConnectionオブジェクトにはErrorsコレクションがあります。
- 2. CommandオブジェクトにはParametersコレクションがあります。
- 3.レコードセットには、 Fieldsコレクションがあります。
- 4. Connection、Command、Recordset、およびFieldオブジェクトにはすべてPropertiesコレクションがあります。
Microsoft は、ADO プログラミング モデル バージョン 2.0 以降にイベントを導入しました。イベントには、ConnectionEventsとRecordsetEventsの2種類があります。ConnectionEventsは、 Connectionが開始されたとき、 Connectionオブジェクトでトランザクションが開始されたとき、トランザクションがコミットされたとき、 Commandsが実行されたとき、およびConnectionが終了したときに発行されます。RecordsetEventsは、 Recordsetオブジェクト内を移動したとき、 Recordset内のフィールドが変更されたとき、 Recordset内の行が変更されたとき、または Recordset 全体が変更されたときに発行されます。
イベントは、イベントを表すイベント ハンドラーを通じて実装されます。
ADO.NET
ADO の最新バージョンである ADO.NET は、Visual Studio.NET で利用できます。ADO.NET は、高度で改良された機能を多数提供しています。データ転送形式として XML を使用し、XML 間でのデータ変換を自動的に行います。XML をベースとしているため、ADO.NET は非接続環境でもデータにアクセスでき、相互運用性も確保できるため、スケーラビリティも大幅に向上しています。
ADO の利点と欠点
ADO の大きな利点の一つは、その汎用性です。ADO は、リレーショナルデータベースと非リレーショナルデータベースの両方、ファイルシステム、テキスト、その他のソースで使用できます。使いやすく、言語に依存しません。ネットワークトラフィックは最小限で、クライアントアプリケーションとデータソース間のレイヤーも少なくなっています。これらの機能により、軽量で高性能なデータアクセスが実現します。
ADO は、RDO でできることすべてに加え、DAO でできることの多くを実行できます。つまり、ADO を使っている場合は、RDO と DAO の仕組みを意識する必要はほとんどないと言えるでしょう。ADO は、Microsoft が提供するデータアクセス オプションの中でも最新のものです。ADO のオブジェクト モデルは、DAO や RDO よりもコンパクトです。
ADOが初めて登場した当初、多くの開発者がバグと速度について不満を漏らしていました。しかし、ADOは改良が続けられており、ADO.NETの登場により、開発者はより優れた柔軟性、スケーラビリティ、そして選択肢を手に入れることができるでしょう。
ADOへの移行を検討している場合は、その特性と利点が既存のソフトウェアの変換コストに見合うかどうかを判断する必要があります。RDOやDAOで記述された古いコードはADOコードに自動的に変換されないため、いくつかの変更を手動で行う必要があります。しかし、ADOへのアップグレードはぜひ検討すべき事項です。
データアクセスオプションの比較
DAOとRDOを使用した大規模なプロジェクトベースをお持ちの場合、今すぐADOを学ぶ必要はないと思われるかもしれません。しかし、最新の技術に遅れないようにするためには、ADOの仕組みを必ず確認する必要があります。
開発者は様々なプロジェクトでDAOを使用していますが、速度がそれほど重要ではない小規模なプロジェクトに最適です。RDOは大規模なリモートデータベースで動作するように特別に設計されており、リモートデータベースにアクセスする古いプロジェクトでも人気があります。
ADOは、ユニバーサルなデータアクセスオブジェクトモデルを構築するというMicrosoftの理念を体現しています。扱うオブジェクトがそれほど多くないため使いやすく、常に更新と改良が続けられています。
早速始めましょう
。リモート データベースに保存されているデータにアクセスするための簡単な VB プロジェクトを作成しましょう。
- 1. VB を起動し、新しいプロジェクトを開始します。
- 2. [プロジェクト参照] に移動し、[Microsoft ActiveX Data Objects 2.0 Library] を選択します (図 B )。
図B |
![]() |
プロジェクト参照で ActiveX Data Objects 2.0 が選択されました |
- 3. フォームにコンボ ボックスを追加し、cboLastName という名前を付けます。
- 4. 画面は図 Cのようになります。
図C |
![]() |
これがコンボボックスです |
- 5.リスト Aのコードをフォームの Loadイベントに追加します。
- 6. 次の接続文字列を変更します。
sConnect = “プロバイダー=SQLOLEDB; データソース=sqlserver; 初期カタログ=pubs; ” _
& “ユーザーID=; パスワード=;”
サーバー名、データベース名、ユーザー ID、パスワードを反映します。
- 7. 次の SQL クエリを変更します。
sSQL = “SELECT au_lname FROM authors”
実際に実行するクエリを反映します。
- 8. [Ctrl][F5] キーを押してプロジェクトを実行します。図Dのような画面が表示されます。
図D |
![]() |
プログラム出力 |
この例では、ADO を使用してリモートデータベースからデータを取得し、AUTHORS テーブルから姓の一覧を表示しました。使用するオブジェクトは 3 つだけです。Connection (リモートデータソースへの物理的な接続を確立する)、Command(実行するコマンドを指定する)、そしてRecordset(クエリによって返されたデータを保存する)です。
ご覧の通り、ADO はとても使いやすいです。さあ、ADO の使い方に慣れたら、次のプロジェクトでぜひ ADO を使ってみてください。