公開:

ADO(ActiveX Data Objects)とは?意味をわかりやすく簡単に解説

text: XEXEQ編集部


ADO(ActiveX Data Objects)とは

ADO(ActiveX Data Objects)はマイクロソフト社が提供するデータアクセス技術の一つです。ADOを使用することで、様々なデータソースに対して統一的な方法でアクセスすることができます。

ADOはOLEDBプロバイダを介してデータベースに接続します。OLEDBは様々なデータソースに対する統一的なアクセス方法を提供するための仕様です。

ADOを使用するにはADOオブジェクトを使用します。主要なADOオブジェクトにはConnection、Command、Recordset、Fieldなどがあります。

Connectionオブジェクトはデータソースへの接続を確立するために使用します。CommandオブジェクトはSQLクエリやストアドプロシージャを実行するために使用します。

Recordsetオブジェクトはデータソースから取得したデータを保持するために使用します。FieldオブジェクトはRecordsetオブジェクト内の個々のフィールドを表します。

ADOを使用したデータアクセス方法

ADOを使用したデータアクセス方法に関して、以下3つを簡単に解説していきます。

  • ADOを使用したデータベース接続の確立方法
  • ADOを使用したSQLクエリの実行方法
  • ADOを使用したデータの取得と更新方法

ADOを使用したデータベース接続の確立方法

ADOを使用してデータベースに接続するにはまずConnectionオブジェクトを作成する必要があります。Connectionオブジェクトを作成する際には接続文字列を指定します。

接続文字列にはプロバイダ名、データソース名、ユーザーID、パスワードなどの情報を含めます。接続文字列の具体的な内容は使用するデータベースやOLEDBプロバイダによって異なります。

Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Open "Provider=SQLOLEDB;Data Source=MySQLServer;Initial Catalog=MyDatabase;User ID=MyUserID;Password=MyPassword;"

ADOを使用したSQLクエリの実行方法

ADOを使用してSQLクエリを実行するにはConnectionオブジェクトを使用してデータベースに接続した後、Commandオブジェクトを作成します。CommandオブジェクトのCommandTextプロパティにSQLクエリを指定し、Executeメソッドを呼び出すことでクエリを実行できます。

SELECTクエリを実行する場合はCommandオブジェクトのExecuteメソッドを呼び出した後、返されたRecordsetオブジェクトを使用してデータを取得します。INSERTやUPDATEなどのクエリを実行する場合はExecuteメソッドを呼び出すだけで済みます。

Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "SELECT * FROM MyTable"
Dim rs As ADODB.Recordset
Set rs = cmd.Execute

ADOを使用したデータの取得と更新方法

ADOを使用してデータを取得するにはRecordsetオブジェクトを使用します。RecordsetオブジェクトはSQLクエリの実行結果を保持しており、Recordsetオブジェクトのフィールドにアクセスすることでデータを取得できます。

データを更新する場合はRecordsetオブジェクトの編集モードに切り替えた上で、フィールドの値を変更し、Updateメソッドを呼び出すことで更新が反映されます。新しいレコードを追加する場合はAddNewメソッドを呼び出した後、フィールドの値を設定し、Updateメソッドを呼び出します。

rs.MoveFirst
While Not rs.EOF
Debug.Print rs.Fields("MyField").Value
rs.MoveNext
Wend

rs.AddNew
rs.Fields("MyField").Value = "New Value"
rs.Update

ADOのメリットとデメリット

ADOのメリットとデメリットに関して、以下3つを簡単に解説していきます。

  • ADOを使用することのメリット
  • ADOを使用する際の注意点
  • ADOの代替技術との比較

ADOを使用することのメリット

ADOを使用することの最大のメリットは様々なデータソースに対して統一的な方法でアクセスできる点です。ADOを使用すれば、別々のデータアクセス技術を使い分ける必要がなくなります。

また、ADOはマイクロソフト社が提供している技術であるため、Windowsプラットフォームとの親和性が高いというメリットもあります。Visual BasicやVBScript、ASPなどのマイクロソフト社の技術と組み合わせて使用することで、効率的な開発が可能になります。

ADOを使用する際の注意点

ADOを使用する際にはパフォーマンスに注意する必要があります。ADOは便利な反面、大量のデータを扱う場合にはパフォーマンスが低下する可能性があります。

また、ADOを使用してデータベースにアクセスする際にはセキュリティにも注意が必要です。接続文字列にユーザーIDやパスワードを含める場合は適切な方法で暗号化するなどの対策が必要になります。

ADOの代替技術との比較

ADOの代替技術としてはADO.NETやLINQ to SQLなどが挙げられます。これらの技術はADOと比べてより高度な機能を提供しており、パフォーマンスや利便性の面でも優れています。

ただし、ADOと比べると学習コストが高くなる傾向があります。プロジェクトの要件や開発チームのスキルセットを考慮した上で、適切な技術を選択する必要があります。

ADOを使用した実際のコード例

ADOを使用した実際のコード例に関して、以下3つを簡単に解説していきます。

  • ADOを使用したデータの取得コード例
  • ADOを使用したデータの更新コード例
  • ADOを使用したストアドプロシージャの実行コード例

ADOを使用したデータの取得コード例

以下はADOを使用してデータベースからデータを取得する際の基本的なコード例です。Connectionオブジェクトを使用してデータベースに接続し、Commandオブジェクトを使用してSQLクエリを実行します。

取得したデータはRecordsetオブジェクトに格納されます。RecordsetオブジェクトのMoveFirstメソッドやMoveNextメソッドを使用して、レコードを順次参照することができます。

Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Open "Provider=SQLOLEDB;Data Source=MySQLServer;Initial Catalog=MyDatabase;User ID=MyUserID;Password=MyPassword;"

Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "SELECT * FROM MyTable"

Dim rs As ADODB.Recordset
Set rs = cmd.Execute

While Not rs.EOF
Debug.Print rs.Fields("MyField").Value
rs.MoveNext
Wend

rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing

ADOを使用したデータの更新コード例

以下はADOを使用してデータベースのデータを更新する際の基本的なコード例です。Recordsetオブジェクトを使用して更新対象のレコードを特定し、フィールドの値を変更した上でUpdateメソッドを呼び出すことで更新が反映されます。

また、AddNewメソッドを使用することで、新しいレコードを追加することもできます。追加する場合はAddNewメソッドを呼び出した後、フィールドの値を設定し、Updateメソッドを呼び出します。

Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Open "Provider=SQLOLEDB;Data Source=MySQLServer;Initial Catalog=MyDatabase;User ID=MyUserID;Password=MyPassword;"

Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "SELECT * FROM MyTable WHERE MyField = 'Old Value'"

Dim rs As ADODB.Recordset
Set rs = cmd.Execute

If Not rs.EOF Then
rs.Fields("MyField").Value = "New Value"
rs.Update
End If

rs.AddNew
rs.Fields("MyField").Value = "Added Value"
rs.Update

rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing

ADOを使用したストアドプロシージャの実行コード例

以下はADOを使用してストアドプロシージャを実行する際の基本的なコード例です。Commandオブジェクトを使用して、ストアドプロシージャを指定し、必要に応じてパラメータを設定します。

ストアドプロシージャを実行する場合はCommandTypeプロパティにadCmdStoredProcを指定します。ストアドプロシージャが結果セットを返す場合はExecuteメソッドを呼び出した後、Recordsetオブジェクトを使用して結果を取得できます。

Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Open "Provider=SQLOLEDB;Data Source=MySQLServer;Initial Catalog=MyDatabase;User ID=MyUserID;Password=MyPassword;"

Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "MyStoredProcedure"

Dim param As ADODB.Parameter
Set param = cmd.CreateParameter("MyParameter", adVarChar, adParamInput, 50)
param.Value = "Parameter Value"
cmd.Parameters.Append param

Dim rs As ADODB.Recordset
Set rs = cmd.Execute

While Not rs.EOF
Debug.Print rs.Fields("MyField").Value
rs.MoveNext
Wend

rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
「デザイン」に関するコラム一覧「デザイン」に関するニュース一覧
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。