【VBScript】SQLServerに接続してSQL(UPDATE)を実行

Tips
スポンサーリンク

SQLServerに接続し、UPDATE文のSQLを実行するサンプルコードです。

Option Explicit

Call Main()

	Sub Main()
	
		Dim objCon
		Dim query
		Dim srvName, dbName, loginName, loginPass

			'データベース接続情報を定義します。'
			srvName = "DBサーバ名"
			dbName = "DB名"
			loginName = "DBユーザ名"
			loginPass = "DBパスワード"

		'SQLServerへ接続します。********************************************
		On Error Resume Next
			Set objCon = CreateObject("ADODB.Connection")
			objCon.Open "Driver={SQL Server}; server=" & srvName & "; database=" & dbName & "; uid=" & loginName & "; pwd=" & loginPass & ";"

		'エラー処理'
		If Err.Number <> 0 Then
			Msgbox("エラーが発生しました。" & " エラーナンバー:" & Err.Number & " エラー詳細:" & Err.Description)
			Set objCon = Nothing
			Exit Sub
		End If
		Err.Clear
		On Error Goto 0
		
		'SQL文を生成し実行します。******************************************

			query = ""
			query = query & "UPDATE テーブル名 "
			query = query & "SET カラム1 = 値1 "
			query = query & "	,カラム2 = 値2 "
			query = query & "	,カラム3 = 値3 "
			query = query & "WHERE "
			query = query & "	 カラム1 = xx"

		On Error Resume Next
		
			'トランザクションを開始します。
			objCon.BeginTrans
			
			'SQLを実行します。
			objCon.Execute(query)

		'エラー処理'
		If Err.Number <> 0 Then
			Msgbox("エラーが発生しました。" & " エラーナンバー:" & Err.Number & " エラー詳細:" & Err.Description)
			'トランザクションをロールバックします。
			objCon.RollbackTrans
			objCon.Close
			Set objRS = Nothing
			Set objCon = Nothing
			Exit Sub
		End If
		Err.Clear
		On Error Goto 0

			'更新をコミットします。
			objCon.CommitTrans

		'終了処理をします。。********************************************
			'オブジェクトを破棄します。
			objCon.Close
			Set objCon = Nothing
	
	End Sub

上記サンプルコードでは、トランザクション管理もしてあります。

もしUPDATEに失敗した場合は、更新内容がロールバックします。UPDATEが成功したら、更新内容を正式にコミットします。

今回のようなUPDATE文が一回実行されるだけの処理であればトランザクション管理も不要かもしれませんが、例えば前回のサンプルコードのように、最初にSELECTして取得結果をレコードセットに格納し、そのレコードセットの行数分ループをして、そのループ処理のなかでUPDATEやINSERTなどの処理を実行する場合は必ずトランザクション管理を実装してください。

そうしないと、ループ処理の途中でエラーが発生し、中途半端な更新が行われてしまい、目も当てられない状態になりますので。

今回も参考になれば幸いです。

タイトルとURLをコピーしました