ADOとは
ADOとは、ActiveX Data Objectsの略で各種データベースをアクセスするコンポーネントです。ADOは、マイクロソフトのテクノロジーでIISをインストールすると自動的にインストールされます。なお、ADOの最新版はマイクロソフトのWebサイトからダウンロードすることができます。ADOは、MDAC(Microsoft Data Access Components)に含まれていますのでMDACをダウンロードします。
ADOには、SQL Server, Oracle, Access Jetなどの各種データベースのドライバーが用意されています。これらのデータベースにアクセスするには、ODBCでDSN(Data Source Name)を登録する方法と、DSNを使用しないで直接データベースを指定する方法(DSN-less方式と呼びます)があります。ここでは、DSN-less方式でデータベースを直接接続します。
ADOには、図に示すようにConnection, Command, Recordset, Record, Steamオブジェクトなどがサポートされています。RecordとStreamは、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 SequenceはOSではサポートされていません。」のエラーになります。この不具合は、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 |
ConnectionのOpenメソッドのタイムアウト時間(単位秒)を設定/参照します。 例: 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 |
RecordsetのCommandオブジェクトを返します。 書式: rs.ActiveCommand |
|
|
ActiveConnection |
Recordset |