VBScript 【データベース操作編】



目次


データベースへの接続

データベースに接続する処理について解説します。

プログラムソース

Option Explicit

Dim Cn
Dim strCn

strCn = "Provider=SQLOLEDB;" & _
         "Data Source=localhost\SQLExpress;" & _
         "Initial Catalog=Database;User ID=sa;Password=sa;"

Set Cn = CreateObject("ADODB.Connection")

Cn.ConnectionString = strCn

Cn.Open

MsgBox "接続成功"

Cn.Close

Set Cn = Nothing

解説

ADODB.Connection

データベース接続に使用するオブジェクト

Connection.ConnectionString = 接続文字列

接続文字列を設定します。

Connection.Open

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

Connection.Close

データベースとの接続を切断します。


データの取得

データを取得する処理について解説します。

プログラムソース

Option Explicit

Dim Cn, Rs
Dim strCn, strSQL

strCn = "Provider=SQLOLEDB;" & _
         "Data Source=localhost\SQLExpress;" & _
         "Initial Catalog=Database;User ID=sa;Password=sa;"

Set Cn = CreateObject("ADODB.Connection")
Cn.ConnectionString = strCn
Cn.Open

strSQL = "SELECT * FROM 社員マスタ"

Set Rs = CreateObject("ADODB.Recordset")
Rs.Open strSQL, Cn

Do Until Rs.EOF
  MsgBox Rs("社員コード").Value & ":" & Rs("社員名").Value
  Rs.MoveNext
Loop

Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing

解説

ADODB.Recordeset

データ操作に使用するオブジェクト

Recordeset.Open SQL文 Connectionオブジェクト

レコードセットを作成します。

Recordset.Close

レコードセットを閉じます。


SQLの実行

SQLを実行する処理について解説します。

プログラムソース

Option Explicit

Dim Cn
Dim strCn, strSQL

strCn = "Provider=SQLOLEDB;" & _
         "Data Source=localhost\SQLExpress;" & _
         "Initial Catalog=Database;User ID=sa;Password=sa;"

Set Cn = CreateObject("ADODB.Connection")
Cn.ConnectionString = strCn
Cn.Open

strSQL = "UPDATE 社員マスタ " & _
          "SET 部門コード = 3 " & _
          "WHERE 社員コード = 4"

Cn.Execute strSQL

MsgBox "更新完了"

Cn.Close : Set Cn = Nothing

解説

Connection.Execute SQL文

指定されたSQL文を実行します。


トランザクション処理

トランザクション処理について解説します。

プログラムソース

Option Explicit : On Error Resume Next
Dim Cn, strCn, strSQL, blnErr
blnErr = True

strCn = "Provider=SQLOLEDB;" & _
         "Data Source=localhost\SQLExpress;" & _
         "Initial Catalog=Database;User ID=sa;Password=sa;"
Set Cn = CreateObject("ADODB.Connection")
Cn.ConnectionString = strCn
Cn.Open
Cn.BeginTrans

strSQL = "INSERT 社員マスタ VALUES(1, '社員A', 1)"
Cn.Execute strSQL
If Err.Number <> 0 Then blnErr = False

strSQL = "INSERT 所有資格マスタ VALUES(1, 1, '簿記3級')"
Cn.Execute strSQL
If Err.Number <> 0 Then blnErr = False

If blnErr = True Then
   Cn.CommitTrans : MsgBox "更新完了"
Else
   Cn.RollbackTrans : MsgBox "更新失敗"
End If

Cn.Close : Set Cn = Nothing

解説

Connection.BeginTrans

トランザクション処理を開始します。

Connection.CommitTrans

更新内容を確定する場合は、コミットします。

Connection.RollbackTrans

更新内容を破棄する場合は、ロールバックします。


データベース別の接続文字列

データベース別の接続文字列については、ご覧のとおりです。

プログラムソース

Oracle
strCn = "Provider=OraOLEDB.Oracle;" & _
         "Data Source=ホスト名:1521/XEPDB1;" & _
         "User Id=MYUSER;Password=MYUSER;"
MySQL
strCn = "DRIVER={MySQL ODBC 8.0 ANSI Driver};" & _
         "SERVER=localhost;PORT=3306; " & _
         "DATABASE=myschema;UID=root;PASSWORD=manager;"
Access
strCn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
         "Data Source=C:\Users\home\Desktop\Database.accdb"