SQLの窓

2014年04月14日


VBScript + MySQL : ADO( ODBC ) による接続とデータの取得(SELECT)

VBScript の形態は、大きく分けて3つあり、一つは単純な一枚のテキストに全てのスクリプトを書いて実行する拡張子が .vbs のもの。さらに、外部にスクリプトソースを分割する事ができる本格的なプログラミングをする人の為にある拡張子 .wsf のもの。そして、ここでは紹介しませんが、HTML で画面を作成し、ブラウザの中での動きと同じような環境で作成する拡張子 .hta の HTMLアプリケーションがあります。

MySQL に接続して csv ファイルを書き出すだけの処理を .vbs と .wsf で書いています。.wsf で特別な事をしていないのでここではどちらがという事がありませんが、.wsf のほうがいろいろ作法があり、複雑なことが可能になっています。

ADO は VBScript からアクセス可能な、主にデータベースを扱う為にあるオブジェクトです。通常、データーベースへのアクセスは、ADODB.ConnectionADODB.Recordset でほとんどの事を実行する事ができます。

VBScript で記述する場合の最大特徴は、エラー処理で、on error resume next と on error goto 0 の間でエラーが発生した場合に強制終了を回避できるようになっています。

※ Scripting.FileSystemObject は、テキストファイルを扱う為のオブジェクトです

ado_std.vbs
Set Cn = CreateObject( "ADODB.Connection" )
Set Rs = CreateObject( "ADODB.Recordset" )
Set Fs = CreateObject( "Scripting.FileSystemObject" )

strDriver = "{MySQL ODBC 5.3 Unicode Driver}"
strServer = "localhost"
strDb = "lightbox"
strUser = "root"
strPass =  "パスワード"

ConnectionString = _
	"Provider=MSDASQL" & _
	";Driver=" & strDriver
ConnectionString = ConnectionString & ";Server=" & strServer
ConnectionString = ConnectionString & ";Database=" & strDb
ConnectionString = ConnectionString & ";UID=" & strUser
ConnectionString = ConnectionString & ";PWD=" & strPass
ConnectionString = ConnectionString & ";"

' **********************************************************
' 接続
' **********************************************************
on error resume next
Cn.Open ConnectionString
if Err.Number <> 0 then
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' クエリー
' **********************************************************
Query = "select * from 社員マスタ"

on error resume next
Rs.Open Query, Cn
if Err.Number <> 0 then
	Cn.Close
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 出力ファイルオープン
' **********************************************************
Set Csv = Fs.CreateTextFile( "ado_std.csv", True )

' **********************************************************
' データ出力
' **********************************************************
Do While not Rs.EOF
	Buffer = ""
	For i = 0 to Rs.Fields.Count - 1
		if Buffer <> "" then
			Buffer = Buffer & ","
		end if
		Buffer = Buffer & """" & Rs.Fields(i).Value & """"
	Next
	Csv.WriteLine Buffer
	Rs.MoveNext
Loop

' **********************************************************
' ファイルクローズ
' **********************************************************
Csv.Close

' **********************************************************
' レコードセットクローズ
' **********************************************************
Rs.Close

' **********************************************************
' 接続解除
' **********************************************************
Cn.Close

Wscript.Echo "処理が終了しました"


ado_pro.wsf
<JOB>
<COMMENT>
************************************************************
■著作権その他

このプログラムはフリーです。どうぞ自由に御使用ください。
著作権は作者である私(lightbox)が保有しています。
また、本ソフトを運用した結果については、作者は一切責任を
負えせんのでご了承ください。
************************************************************
</COMMENT>

<OBJECT id="Cn" progid="ADODB.Connection" />
<OBJECT id="Rs" progid="ADODB.Recordset" />
<OBJECT id="Fs" progid="Scripting.FileSystemObject" />

<SCRIPT language="VBScript">

strDriver = "{MySQL ODBC 5.3 Unicode Driver}"
strServer = "localhost"
strDb = "lightbox"
strUser = "root"
strPass =  "パスワード"

ConnectionString = _
	"Provider=MSDASQL" & _
	";Driver=" & strDriver
ConnectionString = ConnectionString & ";Server=" & strServer
ConnectionString = ConnectionString & ";Database=" & strDb
ConnectionString = ConnectionString & ";UID=" & strUser
ConnectionString = ConnectionString & ";PWD=" & strPass
ConnectionString = ConnectionString & ";"

' **********************************************************
' 接続
' **********************************************************
on error resume next
Cn.Open ConnectionString
if Err.Number <> 0 then
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' クエリー
' **********************************************************
Query = "select * from 社員マスタ"

on error resume next
Rs.Open Query, Cn
if Err.Number <> 0 then
	Cn.Close
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0

' **********************************************************
' 出力ファイルオープン
' **********************************************************
Set Csv = Fs.CreateTextFile( "ado_pro.csv", True )

' **********************************************************
' データ出力
' **********************************************************
Do While not Rs.EOF
	Buffer = ""
	For i = 0 to Rs.Fields.Count - 1
		if Buffer <> "" then
			Buffer = Buffer & ","
		end if
		Buffer = Buffer & """" & Rs.Fields(i).Value & """"
	Next
	Csv.WriteLine Buffer
	Rs.MoveNext
Loop

' **********************************************************
' ファイルクローズ
' **********************************************************
Csv.Close

' **********************************************************
' レコードセットクローズ
' **********************************************************
Rs.Close

' **********************************************************
' 接続解除
' **********************************************************
Cn.Close

Wscript.Echo "処理が終了しました"

</SCRIPT>
</JOB>

現在、VBScript の進化は Microsoft 内では止まって(終わって)おり、後継としては、Framework の使える PowerShell になっていますが、かなり敷居の高いものとなっているため、今でも VBScript の範囲でできる事が多いせいもあって、VBScript が使われているところは多いと思います。



関連する記事

【MySQLの最新記事】
posted by lightbox at 2014-04-14 22:43 | MySQL | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり