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とパスワードさえ知っていれば、テキストファイルだけで十分なのです。