1. はじめに
前回は、WSH環境(VBScript)でInternet Explorerを操作し、指定したWebページを開いたり、WebページからHTMLを取得するための共通モジュールを紹介させていただきました。
今回は、VBScriptでリレーショナルデータベース(RDB:Relational DataBase)を扱う共通モジュールを紹介させていただきます。
対象となるデータベースは、マイクロソフト社のSQL ServerとMicrosoft Accessです。
また、上記以外のデータベースについてはODBC(Open Database Connectivity)ドライバを経由して接続したり、SQLを実行してその結果をMicrosoft Excelに展開するためのメソッドなどを用意しました。ぜひ、ご利用いただければ幸いです。
2. 対象読者
- WSH(VBScript)での開発を行っているプログラマー、システム管理者
3. 必要な環境
- Windows OS全般
4. ADOを利用してデータベースに接続する
さて、データベースに関する知識は、インターネットに関する知識と同様、IT技術者にとって必須です。必須の知識とはいえ、業務でデータベースを自在に操れるようになるには、やはり相応の経験が必要です。
実際、正規のツールがなければデータベースを扱うことができないIT技術者も多いことでしょう。しかし、データベースを扱うにはWindows標準のメモ帳で作成したVBScriptでも十分に可能なのです。
VBScriptからデータベースに接続する方法はいくつかありますが、ここではADO(ActiveX Data Objects)というCOMを利用します。
それではさっそく、ADOを利用してローカルのSQL Serverに接続するサンプルを紹介しましょう。
以下のサンプルは、ローカルのSQL Serverに接続し、[会社]データベースの[従業員]テーブルを参照するサンプルです。
| コード | 名前 | ふりがな | アドレス | 性別 | 年齢 |
|---|---|---|---|---|---|
| 1 | 椎名 克実 | しいな かつみ | shiina_katsumi@example.com | 男 | 33 |
| 2 | 早坂 剛基 | はやさか よしき | hayasaka_yoshiki@example.com | 男 | 32 |
| 3 | 清田 啓介 | きよた けいすけ | kiyota_keisuke@example.com | 男 | 28 |
| 4 | 加藤 あい | かとう あい | katou_ai@example.com | 女 | 46 |
| 5 | 加藤 未華子 | かとう みかこ | katou_mikako@example.com | 女 | 50 |
| 6 | 井上 ジローラモ | いのうえ じろーらも | inoue_girolamo@example.com | 男 | 53 |
| 7 | 黒田 晃司 | くろた こうじ | kurota_kouji@example.com | 男 | 62 |
| 8 | 早川 禄郎 | はやかわ ろくろう | hayakawa_rokurou@example.com | 男 | 32 |
| 9 | 石崎 明日 | いしざき めいび | ishizaki_meibi@example.com | 女 | 40 |
| 10 | 河原 なつみ | かわはら なつみ | kawahara_natsumi@example.com | 女 | 25 |
備考
上記サンプルデータの作成は、以下のサイトを利用させていただきました。
Option Explicit
'ADODB.Connectionを定義します。
Dim cn
Set cn = CreateObject("ADODB.Connection")
'データベース接続情報を定義します。
Dim sSvr
sSvr = "(local)"
Dim sDB
sDB = "会社"
Dim sUID
sUID = "testuser"
Dim sPWD
sPWD = "password01"
'データベース接続文字列を指定します。
Dim sCn
sCn = "Driver={SQL Server};" _
& "Server=" & sSvr & ";" _
& "Database=" & sDB & ";" _
& "UID=" & sUID & ";" _
& "PWD=" & sPWD & ";"
'データベースに接続します。
cn.ConnectionString = sCn
cn.Open
'実行するSQLを定義します。
Dim sSQL
sSQL = "SELECT [名前] FROM [従業員] WHERE [コード] = 1"
'SQLコマンドを定義します。
Dim cmd
Set cmd = CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmd.CommandText = sSQL
'SQLを実行し、結果セットを取得します。
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open cmd
'取得した結果をメッセージに表示します。
MsgBox CStr(rs.Fields("名前").Value)
'データベースから切断します。
rs.Close
cn.Close
このスクリプトを実行すると、ローカルのSQL Serverデータベースに接続し、[会社]データベースの[従業員]テーブルから[コード]列が1のデータの[名前]列の値を取得します。
このように、データベースに接続するための専用ツールは必要ありません。データベースに接続するためのユーザーIDとパスワードさえ知っていれば、テキストファイルだけで十分なのです。
