コンピューティングにおいて、MicrosoftのActiveX Data Objects ( ADO ) は、データ ソースにアクセスするための一連のコンポーネント オブジェクト モデル( COM )オブジェクトで構成されています。MDAC (Microsoft Data Access Components) の一部であるADOは、プログラミング言語とOLE DB (データベースかどうかに関係なく、統一された方法でデータ ストアにアクセスする手段)の間にミドルウェアレイヤーを提供します。ADO を使用すると、開発者はデータベースの実装方法を知らなくてもデータにアクセスするプログラムを作成できます。開発者は、接続用のデータベースのみを認識している必要があります。ADO を使用する場合、データベースにアクセスするためにSQLの知識は必要ありませんが、ADO を使用して SQL コマンドを直接実行できます (ただし、使用するデータベースの種類に依存するという欠点があります)。
Microsoft は 1996 年 10 月に ADO を導入し、このソフトウェアを、 RDO (リモート データ オブジェクト) やDAO (データ アクセス オブジェクト)など、データ ソースにアクセスするための Microsoft の以前のオブジェクト レイヤーの後継として位置付けました。
ADO は 4 つのコレクションと 12 個のオブジェクトで構成されています。
ADO コレクション
- フィールド
- このコレクションには、一連の Field オブジェクトが含まれます。コレクションは、Recordset オブジェクトまたは Record オブジェクトで使用できます。Recordset オブジェクトでは、Fields コレクションを構成する各 Field オブジェクトは、その Record セット オブジェクトの列に対応します。Record オブジェクトでは、Field は、ツリー構造の名前空間を指す絶対 URL または相対 URL (Microsoft OLE DB Provider for Internet Publishing などの半構造化データプロバイダーで使用)、またはその Record オブジェクトに関連付けられた既定の Stream オブジェクトへの参照になります。
- プロパティ
- オブジェクトには複数の Property オブジェクトを含めることができ、それらはオブジェクトの Properties コレクションに含まれます。
- パラメータ
- コマンドオブジェクトには、定義済みの動作を変更するための複数のパラメータコマンドを含めることができ、各パラメータオブジェクトはコマンドオブジェクトのパラメータコレクションに含まれています。
- エラー
- プロバイダーによって作成されたすべてのエラーは Error オブジェクトのコレクションに渡されますが、Errors コレクション自体は Connection オブジェクトに含まれています。ADO 操作によってエラーが発生すると、コレクションはクリアされ、コレクション内に Error オブジェクトの新しいグループが作成されます。
ADO オブジェクト
- 繋がり
- 接続オブジェクトは、ADO が OLE DB を介してデータ ストアに接続するものです。接続オブジェクトはセッションに関する情報を格納し、データ ストアに接続する方法を提供します。一部のデータ ストアでは接続を確立する方法が異なるため、一部の方法は特定の OLE DB プロバイダーの接続オブジェクトではサポートされない場合があります。接続オブジェクトは、接続をキーと値のペアのリストとして指定する接続文字列 (例: "Provider='SQLOLEDB';Data Source='TheSqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';") とともに 'Open' メソッドを使用してデータ ストアに接続します。この接続文字列の先頭では、接続オブジェクトに必要なデータ ストア接続の種類を識別する必要があります。
- 構文「provider=」を使用する OLE DB プロバイダー (たとえば SQLOLEDB)
- ファイル名。構文「file name=」を使用します。
- リモートプロバイダーとサーバー(RDSを参照)、「リモートプロバイダー=」と「リモートサーバー=」の構文を使用するか、
- 絶対URL(構文「URL=」を使用)
- 指示
- 接続オブジェクトがデータ ソースへのセッションを確立すると、コマンド オブジェクトを介してデータ プロバイダーに指示が送信されます。コマンド オブジェクトは、CommandText プロパティを使用して SQL クエリを直接プロバイダーに送信したり、Parameter オブジェクトまたは Parameters コレクションを使用してパラメーター化されたクエリまたはストアド プロシージャを送信したり、クエリを実行して Execute メソッドを介してデータセット オブジェクトに結果を返すことができます。Stream、RecordSet、Connection オブジェクトなど、他のオブジェクトに関連して Command オブジェクトで使用できるメソッドは他にもいくつかあります。
- レコードセット
- レコードセットはレコードのグループであり、基本テーブルから取得することも、テーブルへのクエリの結果として取得することもできます。RecordSet オブジェクトには、Fields コレクションと Properties コレクションが含まれます。Fields コレクションは、テーブル内の対応する列である Field オブジェクトのセットです。Properties コレクションは、OLE DB プロバイダーの特定の機能を定義する Property オブジェクトのセットです。RecordSet には、その中に存在するデータを検査するための多数のメソッドとプロパティがあります。レコードセット内のレコードを更新するには、レコードの値を変更してから Update メソッドまたは UpdateBatch メソッドを呼び出します。
- すぐに
- レコードセットは、adLockOptimistic ロックまたは adLockPessimistic ロックを使用してロックされます。レコードが変更され、Update メソッドが呼び出されると、データ ソースでデータが更新されます。
- バッチ
- レコードセットは adLockBatchOptimistic を使用してロックされ、Update が呼び出されるたびに、一時バッファー内のデータが更新されます。最後に、UpdateBatch が呼び出されると、データ ソースでデータが完全に更新されます。これには、すべてがメモリ内で実行されるという利点があり、問題が発生した場合には UpdateCancel が呼び出され、更新はデータ ソースに送信されません。
- 取引
- OLE DB プロバイダーが許可している場合は、トランザクションを使用できます。トランザクションを開始するには、プログラマーは BeginTrans メソッドを呼び出して必要な更新を行います。すべて完了したら、プログラマーは CommitTrans メソッドを呼び出します。RollbackTrans を呼び出して、トランザクション内で行われた変更を取り消し、データベースをトランザクション開始前の状態にロールバックすることができます。
- 記録
- このオブジェクトはデータベース内の 1 つのレコードを表し、フィールド コレクションを含みます。RecordSet は Record オブジェクトのコレクションで構成されます。
- ストリーム
- ストリームは主に RecordSet オブジェクトで使用され、バイト ストリームの読み取りと書き込みを行う手段です。主に、レコードセットを XML 形式で保存したり、CommandText オブジェクトの代わりとして OLE DB プロバイダーにコマンドを送信したり、バイナリ ファイルまたはテキスト ファイルの内容を格納するために使用されます。
- パラメータ
- パラメータは、共通機能の動作を変更する手段です。たとえば、ストアド プロシージャには、実行する必要がある内容に応じて異なるパラメータが渡される場合があります。これらは、パラメータ化されたコマンドと呼ばれます。
- 分野
- 各 Record オブジェクトには多くのフィールドが含まれており、RecordSet オブジェクトにも対応する Field オブジェクトがあります。RecordSet オブジェクトの Field オブジェクトは、参照するデータベース テーブル内の列に対応します。
- 財産
- このオブジェクトは OLE DB プロバイダに固有のもので、プロバイダが実装した機能を定義します。プロパティ オブジェクトは、組み込みプロパティ (ADO によって既に実装されている明確に定義されたプロパティで変更できません) または動的プロパティ (基になるデータ プロバイダによって定義され変更可能です) のいずれかになります。
- エラー
- ADO の使用中に OLE DB プロバイダー エラーが発生すると、Errors コレクションに Error オブジェクトが作成されます。ただし、その他のエラーは Error オブジェクトに格納されません。たとえば、RecordSet オブジェクトまたは Field オブジェクトでデータを操作しているときに発生するエラーは、Status プロパティに格納されます。
基本的な使い方
ADO を使用してデータにアクセスし、操作するには、いくつかの基本的な手順が必要です。
- データベースに接続するための接続オブジェクトを作成します。
- データを受け取るためにレコードセット オブジェクトを作成します。
- 接続を開く
- レコードセットを開き、目的のテーブル名または SQL ステートメントをopen関数のパラメータとして渡すことで、レコードセットにデータを入力します。
- 取得したデータに対して必要な検索/処理をすべて実行します。
- UpdateまたはUpdateBatchメソッドを使用して、データに加えた変更 (ある場合) をコミットします。
- レコードセットを閉じる
- 接続を閉じる
ASPの例
以下は、ADO を使用して、「Phonebook」というテーブルから「Name」フィールドを選択する ASP の例です。「PhoneNumber」は「555-5555」に等しくなります。
dim myconnection 、myrecordset 、name set myconnection = server.createobject ( " ADODB.Connection " ) set myrecordset = server.createobject ( " ADODB.Recordset " )
myconnection.open mydatasource myrecordset.open " Phonebook " 、myconnection myrecordset.find " PhoneNumber = ' 555-5555 ' " name = myrecordset.fields.item ( " Name " ) myrecordset.close
myrecordset = nothingを設定します。myconnection = nothingを設定します。
これは、Recordset オブジェクトの機能の代わりにプレーン SQL を使用する次の ASP コードと同等です。
dim myconnection 、myrecordset 、name set myconnection = server.createobject ( "ADODB.connection" ) myconnection.open mydatasource set myrecordset = myconnection.execute ( " SELECT Name FROM Phonebook WHERE PhoneNumber = ' 555-5555'" ) name = myrecordset ( 0 )
ソフトウェアサポート
ADO は、バイナリ COM インターフェイスへのバインドをサポートするすべての開発言語でサポートされています。これらの言語には、ASP、Delphi、PowerBuilder、およびVisual Basic for Applications (VBA) が含まれます。ADO サポートは、 dBase Plus 8 (ADO 付き) に追加されました。
遺産
Windows アプリケーション開発を対象とする主要モードとして C#/.NET が C/Win32 に取って代わったのと同じように、ADO.NET が ADO に取って代わりました。ADO.NET は ADO と同じ設計パターンに従うため、ADO 開発者は .NET フレームワークに移行するときに簡単に前進できます。
参照
- ADO.NET
- ADO と ADO.NET の比較
- MSDAIPP
参考文献
外部リンク
- Microsoft ADO ページ
- データベース接続文字列 2021年1月26日、Wayback Machineにアーカイブされました
- DevGuru ADO クイック リファレンス
