怠日記

写真・金魚・昆虫・プログラミングの趣味を語るサイトです。似たようなことをnoteにも書いたり書いてなかったり。

VBScript - Command でデータの追加・更新・削除

ADO (Microsoft ActiveX Data Objects) を使ったデータベースの追加・更新・削除方法を紹介する。

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"