Access + Webのホームへ戻る

ADOとは

 

ADOとは、ActiveX Data Objectsの略で各種データベースをアクセスするコンポーネントです。ADOは、マイクロソフトのテクノロジーでIISをインストールすると自動的にインストールされます。なお、ADOの最新版はマイクロソフトのWebサイトからダウンロードすることができます。ADOは、MDAC(Microsoft Data Access Components)に含まれていますのでMDACをダウンロードします。

 

ADOには、SQL Server, Oracle, Access Jetなどの各種データベースのドライバーが用意されています。これらのデータベースにアクセスするには、ODBCDSN(Data Source Name)を登録する方法と、DSNを使用しないで直接データベースを指定する方法(DSN-less方式と呼びます)があります。ここでは、DSN-less方式でデータベースを直接接続します。

 

ADOには、図に示すようにConnection, Command, Recordset, Record, Steamオブジェクトなどがサポートされています。RecordStreamは、ADO 2.5でサポートされたオブジェクトです。ADOの各種オブジェクトには、プロパティとメソッドがあります。表にConnection, Command, Recordsetオブジェクトでサポートされているプロパティとメソッドの一覧を列挙しましたので参考にしてください。

 

ADOには、ADOX(ADO Extensions for DDL and Security)と呼ばれるADOの拡張コンポーネントがります。ADOXには、データベースの構造を保守するための各種プロパティとメソッドがサポートされています。

 

重要

Access 2002で作成されたデータベース(MDB)ADO経由でアクセスしたときの不具合:

 

Access 2002で作成されたデータベース(MDB)を、ADO 2.7を使用してアクセスすると「選択されたCollating SequenceOSではサポートされていません。」のエラーになります。この不具合は、Access 2000のデータ形式(デフォルトのデータ形式)とAccess 2002のデータ形式双方で発生します。

 

この不具合を回避するには、

     Access 2000でデータベース(MDB)を作成する。

     Access 2002で作成したデータベース(Access 2000/2002のデータ形式)Access 97のデータ形式に変換する。

 

の方法があります。

 

この不具合は、Access 2002 SP1でも解決されていないようです。

 

 

 

図 ADOオブジェクトモデル

 

  ADOXオブジェクトモデル

 

表 Connectionオブジェクトのプロパティ/メソッド

プロパティ

Attributes

Connectionオブジェクトの属性を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.Attributes)

CommandTimeout

Command実行時のタイムアウト時間(単位秒)を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.CommandTimeout=10 ‘ seconds

response.Write(cnn.CommandTimeout) è 10

ConnectionString

Connection情報を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0"

response.Write(cnn.ConnectionString)

èProvider=Microsoft.Jet.OLEDB.4.0

ConnectionTimeout

ConnectionOpenメソッドのタイムアウト時間(単位秒)を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0"

cnn.ConnectionTimeout=30 ‘ seconds

response.Write(cnn.ConnectionTimeout) è 30

CursorLocation

Cursorのロケーション(adUseServer,adUseClient)を設定/参照します。

例:

const adUseServer=2

const adUseClient=3

strSQL="SELECT * FROM 得意先"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=server.CreateObject("ADODB.Recordset")

rs.CursorLocation=adUseClient

response.Write(rs.CursorLocation ) è 3

rs.Open strSQL,cnn

DefaultDatabase

デフォルトデータベース名を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.DefaultDatabase="mydb"

IsolationLevel

トランザクションのIsolationレベルを設定/参照します。

例:

const adXactIsolated = 1048576

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.IsolationLevel=adXactIsolated

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.IsolationLevel) è 1048576

Mode

プロバイダーのアクセク権限を設定/参照します。

例:

const adModeRead = 1

const adModeWrite = 2

const adModeReadWrite = 3

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Mode=adModeReadWrite

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.Mode) è 3

Provider

プロバイダー名を設定/参照します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.Provider) è Microsoft.Jet.OLEDB.4.0

 

State

Connectionの状態(open/closed)を返します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

response.Write(cnn.State) è 0(closed)

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.State) è 1(open)

 

Version

ADOのバージョン番号を返します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

response.Write(cnn.Version) è 2.7

メソッド

BeginTrans

新規トランザクションを開始します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.BeginTrans

Cancel

実行を中止します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.Cancel

Close

データベースを切断します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.Close

CommitTrans

トランザクションを保存して終了させます。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.BeginTrans

・・・

cnn.CommitTrans

Execute

各種処理を実行します。

例:

strSQL = "SELECT * FROM 得意先;"

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set rs=cnn.Execute(strSQL)

 

Open

データベースを接続します。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

 

OpenSchema

スキーマ情報を返します。

 

RollbackTrans

トランザクションを復元して終了させます。

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

cnn.BeginTrans

・・・

cnn.RollbackTrans

 

 

表 Commandオブジェクトのプロパティ/メソッド

プロパティ

ActiveConnection

Connection情報を設定/参照します。

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.Mappath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.ActiveConnection=cnn

response.Write(cmd.ActiveConnection)

èProvider=Microsoft.Jet.OLEDB.4.0;

èPassword="";User ID=Admin;

èData Source=D:\webdb\ado.mdb; ・・・

 

CommandText

プロバイダーのCommand情報(SQL,Table,URL.・・・)を設定/参照します。

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.Mappath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.CommandText="得意先"

response.Write(cmd.CommandText)

è 得意先

CommandTimeout

Command実行時のタイムアウト時間(単位秒)を設定/参照します。

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.CommandTimeout=10

response.Write(cmd.CommandTimeout) è 10

CommandType

Commandオブジェクトのタイプ(adCmdText, adCmdTable, adCmdStoredProc,・・・)を設定/参照します。

 

例:

const adCmdText = 1

const adCmdTable = 2

const adCmdStoredProc = 4

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.CommandText="得意先"

cmd.CommandType=adCmdTable

response.Write(cmd.CommandType) è 2

Name

Commandオブジェクト名を設定/参照します。

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.Name="CommandName"

response.Write(cmd.Name) è CommandName

Prepared

Commandを最初に実行するときコンパイル版を保存するかどうかの指示を設定/参照します。

 

例:

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

cmd.ActiveConnection=cnn

cmd.CommandText="得意先"

cmd.Prepared=true

response.Write(cmd.Prepared) è True

State

Commandオブジェクトの状態(Closed, Open, Connecting, Executing, Fetching)を返します。

 

例:

const adStateClosed = 0

const adStateOpen = 1

const adStateConnecting = 2

const adStateExecuting = 4

const adStateFetching = 8

set cnn=server.CreateObject("ADODB.Connection")

cnn.Provider="Microsoft.Jet.OLEDB.4.0"

cnn.Open server.MapPath("webdb/ado.mdb")

set cmd=server.CreateObject("ADODB.Command")

response.Write(cmd.State) è 0

メソッド

Cancel

処理を中止します。

 

書式:

cmd.Cancel

CreateParameter

パラメータオブジェクトを新規に生成します。

 

書式:

set prm=

cmd.CreateParameter(name, type, direction, size, value)

Execute

処理を実行します。

 

書式:

set rs = cmd.Execute(recordaffected, parameters, options)

or

cmd.Execute recordaffected, parameters, options

 

 

 

表 Recordsetオブジェクトのプロパティ/メソッド

プロパティ

AbsolutePage

Recordsetオブジェクトのページ番号を設定/参照します。

 

書式:

rs.AbsolutePage

AbsolutePosition

カレントレコードの位置を設定/参照します。

 

書式:

rs.AbsolutePosition

ActiveCommand

RecordsetCommandオブジェクトを返します。

 

書式:

rs.ActiveCommand

ActiveConnection

Recordset