SQL接続でSQLを発行する
SilkTest WorkbenchのビジュアルテストからSQLを発行できませんが、.NETスクリプトを併用することでSQLの呼び出しが行えます。
この例では、SQLコネクションを利用してSQLを発行しています。
このサンプルはビジュアルテストから呼び出されることを想定しているので、入力パラメータに接続情報を渡して、SQL発行結果を出力パラメータにセットしています。
ビジュアルテストから渡されるパラメータ用の変数を定義
- .NETスクリプトを新規作成する
- .NETスクリプトのプロパティを表示して下記のように入力パラメータと出力パラメータを定義する
- 参照にはSystem.Dataを追加
.NETスクリプトのコーディング例
Imports System.Data.Odbc
Public Module Main
Public Sub Main(args As IDictionary(Of String, Object))
Dim myConn As New OdbcConnection
Dim _sqlServerName = args("sqlServerName") 'SQL Server名
Dim _UID = args("DBUsername") 'ユーザID
Dim _PWD = args("DBPassword") 'パスワード
Dim _sqlDatabaseName = args("sqlDatabaseName") 'データベース名
Dim _tableName = args("tableName") 'テーブル名
Dim _numberOfColumns = args("numberOfColumns") 'カラム数
Dim _selectedColumns = args("selectedColumns") '対象カラム
Dim _whereClause = args("whereClause") 'where句
Dim _UIDColumn = args("UIDColumn") 'where句 左辺
Dim _myOperand = args("myOperand") 'where句 右辺
Dim mySQLQuery = ""
If _myOperand = "" Then
_myOperand = "="
End If
If _UIDColumn = "" Then
mySQLQuery = "select " + _selectedColumns + " from " + _tableName + ";"
Else
mySQLQuery = "select " + _selectedColumns + " from " + _tableName + " where " + _UIDColumn + " " + _myOperand + " '" + _whereClause + "';"
End If
'MsgBox(mySQLQuery, vbOkOnly) 'display query
Dim myCmd = New SQLCommand(mySQLQuery, myConn)
myCmd.CommandTimeout = 0
Dim myResults = ""
Dim currentColumn As Integer = 0
Try
myConn.ConnectionString = "Server=" + _sqlServerName + ";UID=" + _UID + ";PWD=" + _PWD + ";Database=" + _sqlDatabaseName + ""
myConn.Open()
Catch ex As Exception
MsgBox ("エラー! SQL Serverの接続に失敗しました: " & ex.Message, vbOkOnly)
End Try
If myConn.State.ToString.Equals("Open") Then
Dim myReader = myCmd.ExecuteReader()
While myReader.read()
While currentColumn < Val(_numberOfColumns)
myResults = myResults + myReader.Item(currentColumn).ToString
currentColumn = currentColumn + 1
myResults = myResults + ","
End While
currentColumn = 0
myResults = myResults.Substring(0,Len(myresults)-1)
End While
myReader.Close()
myReader = Nothing
args("outputRecordSet") = myResults
Else
args("outputRecordSet") = myResults
End If
myCmd.cancel()
myConn.close()
myConn = Nothing
End Sub
End Module
免責事項
ここで紹介したスクリプトは説明のためのサンプルであり、製品の一部ではございません。スクリプトが実際に動作するか、御社業務に適合するかなどに関しまして、一切の保証はございません。
スクリプト、説明、その他すべてについて、無謬性は保障されません。
ここで紹介するスクリプトの一部、もしくは全部について、弊社に断りなく、御社スクリプトの内部に組み込み、そのままご利用頂いても構いません。
本スクリプトの一部もしくは全部を二次的著作物に対して引用する場合、著作権法の精神に基づき、適切な扱いを行ってください。