開発日記 α 1.1

前回の続きです。

今回は VBScript で SQL Server に接続して、SELECT文を投げて結果を取得するところまで。

これも簡単ですね、私は OLE DB の方が ODBC よりも好きなのでいつも以下のような感じで SQL Server に接続しています。

Set objAdo = Server.CreateObject("ADODB.Connection")
objAdo.ConnectionString = "Provider=SQLOLEDB;" & _
"User ID=<ユーザー名>;" & _
"Password=<パスワード>;" & _
"Data Source=<接続先のホスト名(もしくはIPアドレス)>;" & _
"Initial Catalog=<接続するDB>"
objAdo.Open

が、今回は Windows統合認証 を使ってアクセスしたいので、上記のような SQL SERVER のアカウントを使っているタイプの ConnectionString は使えません。

っということで、接続文字列は以下のような感じにしました。

objAdo.ConnectionString = "Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=<接続するDB>;Data Source=(local)"

Integrated Security=SSPIと言う部分で Windows統合認証を有効にしています。

これで、DBへの接続は問題なく出来たので、後は SELECT文を投げて結果が取得できれば問題ないのですが、ここでまた躓きました。

VBScript で文字列を出力する方法が分からない・・・

あきれてしまいますが、ASP の場合には Response.Write で出力できますが、VBS の場合にはどうすればいいのか分かりません。
Echo とか Print みたいな関数が無いんですよね・・・
MsgBox と言う関数がありますが、これはダイアログボックスを表示する関数なのでちょっと違いますよね・・・

初めて知ったんですが、こういう場合には

WScript.Echo "<文字列>"

とすれば良いようです。

と言うことで全体的には以下のような感じのスクリプトになりました。

' DBへ接続
Set objAdo = CreateObject("ADODB.Connection")
objAdo.ConnectionString = "Provider=SQLOLEDB;Integrated Security=SSPI;Initial Catalog=TblName;Data Source=(local)"
objAdo.Open

' レコードセットを取得
Set objRS = objAdo.Execute("SELECT itemName FROM TblName")

do until objRS.eof
' 結果を出力
WScript.Echo objRS("itemName")
objRS.movenext
loop

objRS.Close
objAdo.Close

これを db.vbs として保存してコマンドラインから実行してみました。

cscript db.vbs

きちんと結果が返ってきたのでテスト完了です!!

次回は、テーブルなどを作成し、実際に動かすスクリプトを組んで行きたいと思います。