Command オブジェクトを使って INSERT, UPDATE, DELETE 文を実行する方法である。
サンプルスクリプト(データの追加)
次のスクリプトは DEPT 表にデータを1件追加する。
Option Explicit 'データベースに接続する Dim conn Set conn = CreateObject("ADODB.Connection") conn.Open "Provider=OraOLEDB.Oracle;User ID=scott;Password=tiger;Data Source=ORCL;" 'トランザクションを開始 conn.BeginTrans 'Commandオブジェクトを生成 Dim cmd Set cmd = CreateObject("ADODB.Command") 'INSERT文を設定 cmd.CommandText = "INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (50, 'NEWDEPT', 'QUINCY')" 'データベースとの接続オブジェクトを設定 Set cmd.ActiveConnection = conn 'SQLを実行 Dim recordsAffected cmd.Execute recordsAffected 'オブジェクトを解放 Set cmd.ActiveConnection = Nothing Set cmd = Nothing '変更を保存してトランザクションを終了 conn.CommitTrans '処理結果を表示 WScript.Echo "処理件数: " & CStr(recordsAffected) 'データベースとの接続を切断する If conn.State <> 0 Then conn.Close End If Set conn = Nothing
説明
Command.CommandText に実行したい SQL を設定する。
cmd.CommandText = "INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (50, 'NEWDEPT', 'QUINCY')"Command.ActiveConnection にデータベースとの接続オブジェクトを設定する。
Set cmd.ActiveConnection = conn接続オブジェクトではなく、接続文字列を指定してもよい。
その場合はデータベースに新しく接続される。
cmd.ActiveConnection = "Provider=OraOLEDB.Oracle;User ID=scott;Password=tiger;Data Source=ORCL;"Command.Execute で SQL が実行される。
引数に指定した変数に SQL によって処理された件数が格納される。
(例の場合は変数 recordsAffected に入る)
cmd.Execute recordsAffectedデータの更新
データを更新する場合、Command.CommandText に UPDATE 文を設定する。
ほかは追加時と同様。
cmd.CommandText = "UPDATE DEPT SET LOC = 'DALLAS' WHERE DEPTNO = 50"データの削除
データを削除する場合、Command.CommandText に DELETE 文を設定する。
ほかは追加時と同様。
cmd.CommandText = "DELETE FROM DEPT WHERE DEPTNO = 50"