WSHでデータベースにアクセス

Windows Scripting Hostsでコーディングする前に、データソース(ODBC)でデータベースへのアクセス環境を作成しておく。サンプルは、ファイルDSNを使用したもの。

'==============================================================================
'
'    データベースアクセスサンプル
'            検索結果をカンマ区切りで表示する.
'
'==============================================================================
On Error Resume Next

'-------------------------------------------------
'
'    変数宣言
'
'-------------------------------------------------
Dim objADO, objRS
Dim i
Dim strSQL
Dim strBuffer

'-------------------------------------------------
'    データベースの接続設定・接続
'-------------------------------------------------
Set objADO = CreateObject("ADODB.Connection")

'タイムアウトの設定を変更しておく
objADO.CommandTimeout=0
objADO.Open("FILEDSN=ファイルDSNの場所")

objADO.Errors.Clear

'-------------------------------------------------
'    データを検索
'-------------------------------------------------

strSQL = "SQL文(接続データベースの書式で記述する)"
'レコードを読み終わるまでループする
Set objRS = objADO.Execute(strSQL)
objRS.MoveFirst
If objRS.EOF And objRS.BOF Then
Else
    Do While Not objRS.EOF
        For i = 0 To objRS.Fields.Count - 1
            If i = 0 Then
                If Len(Trim(objRS.Fields(i))) > 0 Then
                    strBuffer = """" & Trim(Replace(Replace(objRS.Fields(i), vbCR,""), vbLF, "")) & """"
                Else
                    strBuffer = """" & Trim(objRS.Fields(i)) & """"
                End If
            Else
                If Len(Trim(objRS.Fields(i))) > 0 Then
                    strBuffer = strBuffer & vbTab & _
                """" & Trim(Replace(Replace(objRS.Fields(i), vbCR, ""), vbLF, "")) & """"
                Else
            strBuffer = strBuffer & vbTab & """" & Trim(objRS.Fields(i)) & """"
                End If
            End If
        Next
        WSCript.Echo strBuffer
        objRS.MoveNext
    Loop
End If

'-------------------------------------------------
'    DML(Data Manipulation Language)
'-------------------------------------------------
strSQL = "SQLのDML文"

If strSQL <> "" Then
    objADO.Errors.Clear
    objADO.BeginTrans
    objADO.Execute strSQL
    If Err.Number = 0 Then
        objADO.CommitTrans
    Else
        objADO.RollbackTrans
        WScript.Echo "処理中にエラーが発生しました。ロールバックします。[" & Err.Number & ":" & Err.Description
    End If
End IF

objADO.Close
Set objADO = Nothing