投稿者 るきお  (社会人) 投稿日時 2016/1/4 11:25:47
>そこで、SQL自体をログに出力しようと考えたのですがパラメータの付与されたSQLをうまく出力できません。

これの意味は、次のようなパラメーターが組み込まれた形のSQL文のログ出力には成功してるということでしょうか?
INSERT tablename VALUES(@id)

※パラメーターの表現は対象のDBによって異なる場合があります。@ は SQL Serverの場合です。

実際にじっさいにデータベースが受け取るのは@idのような状態のSQL文なので、
これで、さらにパラメーターの内容まで出力したいということでしたら、自分でループ等を使ってパラメーターの値を逐一ログに出力するしかないと思います。

このようなイメージです。
Imports System.Data.SqlClient

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


        Dim command As New SqlCommand

        command.CommandText = "INSERT tablename VALUES (@id)"

        Dim pId As New SqlParameter("@id", SqlDbType.Int)
        pId.Value = 627

        command.Parameters.Add(pId)

        Dim log As New Log

        Using cn As New SqlConnection("Server=xxx;Integrated Security=True;")
            log.Write(command.CommandText)
            For Each param As SqlParameter In command.Parameters
                log.Write(param.ParameterName & "=" & param.Value.ToString)
            Next

            cn.Open()
            command.ExecuteNonQuery()
            cn.Close()
        End Using

    End Sub
End Class

Public Class Log

    Public Property LogPath As String = "C:\test\sql.log"

    Public Sub Write(text As String)
        My.Computer.FileSystem.WriteAllText(LogPath, text & vbNewLine, True)
    End Sub
End Class