SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

まだまだ使える! WSH

まだまだ使える! WSHプログラミング ~ データベースを扱う共通モジュールの紹介

まだまだ使える! WSH 第3回

  • X ポスト
  • このエントリーをはてなブックマークに追加

5. 共通モジュールを利用してデータベースに接続する

 リスト1のスクリプトの場合、データベースに接続するための手続きは、

  • ADODB.Connection
  • ADODB.Command
  • ADODB.Recordset

 の3つのCOMを利用していますが、慣れないうちはその使い方が少々やっかいです。このような手続きは、共通モジュールにしてしまいましょう。

 そうすれば、COMの使い方を理解しなくても、かんたんにデータベースを操作することができます。

 例として、これから紹介する共通モジュールを利用した場合、リスト1と同じ処理を行うスクリプトは、次のように簡素化されます。

リスト2 共通モジュールを使用してSQL Serverに接続する
Option Explicit

'--------------------------------------------------------------------------------
'<<< 共通モジュール インポート >>>
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Function Include(ByVal strFileName)
    Include = fso.OpenTextFile(strFileName, 1, False).ReadAll()
End Function
Execute Include(".\DBConnect.vbs")   'データベース操作クラス
Set fso = Nothing
'--------------------------------------------------------------------------------

'データベース操作クラス(共通モジュール)をインスタンス化します。
Dim dbm
Set dbm = New DBConnect

'データベース接続情報を定義します。
Dim sSvr
sSvr = "(local)"
Dim sDB
sDB = "会社"
Dim sUID
sUID = "testuser"
Dim sPWD
sPWD = "password01"

'データベースに接続します。
dbm.MSSQLConnect sSvr, sDB, sUID, sPWD

'実行するSQLを定義します。
Dim sSQL
sSQL = "SELECT [名前] FROM [従業員] WHERE [コード] = 1"

'SQLを実行します。
dbm.ExecQuery sSQL

'取得した結果をメッセージに表示します。
MsgBox CStr(dbm.Recordset.Fields("名前").Value)

'データベースから切断します。
dbm.Disconnect

 共通モジュールのインポート部分を除けば、かなりシンプルなスクリプトになっているかと思います。シンプルであるがゆえ、接続先となるデータベース情報を変更したり、実行するSQLを変更することも容易です。

 SQL Server以外にも、Microsoft Accessデータベースに接続する方法も紹介しましょう。SQL Serverデータベースに接続するメソッドはMSSQLConnect()でしたが、Accessデータベースの場合、MDBConnect()となり、そのメソッドのパラメータに接続先のMDBファイルのパスを指定するだけです。

リスト3 共通モジュールを使用してMicrosoft Accessデータベースに接続する
Option Explicit

'--------------------------------------------------------------------------------
'<<< 共通モジュール インポート >>>
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Function Include(ByVal strFileName)
    Include = fso.OpenTextFile(strFileName, 1, False).ReadAll()
End Function
Execute Include(".\DBConnect.vbs")   'データベース操作クラス
Set fso = Nothing
'--------------------------------------------------------------------------------

'データベース操作クラス(共通モジュール)をインスタンス化します。
Dim dbm
Set dbm = New DBConnect

'MDBファイルのパスを指定します。
Dim sPath
sPath = ".\sampledb.mdb"

'データベースに接続します。
dbm.MDBConnect(sPath)

'実行するSQLを定義します。
Dim sSQL
sSQL = "SELECT [名前] FROM [従業員] WHERE [コード] = 1"

'SQLを実行します。
dbm.ExecQuery sSQL

'取得した結果をメッセージに表示します。
MsgBox CStr(dbm.Recordset.Fields("名前").Value)

'データベースから切断します。
dbm.Disconnect

 DBConnect共通モジュールを使用してSQL Serverデータベースに接続した場合と比較すると、変更点は上述のとおり、たったの2箇所だけであることが理解できるかと思います。

 それ以外の部分、例えばSQLを実行する部分や実行結果を取得する部分については、SQL Serverデータベースを扱う場合と変更がありません。

 また、DBConnect共通モジュールには、ODBCドライバを経由して様々なデータベースに接続することが可能ですし、SQLの実行で取得して結果セットをMicrosoft ExcelやCSVファイルに出力するためのメソッドもあります。

次のページ
6. DBConnect共通モジュール

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
まだまだ使える! WSH連載記事一覧

もっと読む

この記事の著者

五十嵐貴之(イカラシ タカユキ)

1975年2月生まれ。新潟県長岡市(旧越路町)出身。フリープログラミング団体いかちソフトウェア所属。 著書・これならわかるSQL入門の入門(翔泳社)・Windows自動処理のためのWSHプログラミングガイド(ソシム)・いちばんやさしいデータベースの本(技術評論社)・SQLiteポケットリフ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9205 2016/02/18 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング