質問

れる方法はありまアクセスの計算書として送られるSQLサーバー?

            Dim params(1) As OleDb.OleDbParameter
            params(0) = New OleDb.OleDbParameter("@ID", OleDb.OleDbType.VarChar, 50)
            params(0).Value = guiItemsGridView.Rows(e.RowIndex).Cells("ID").Value
            params(1) = New OleDb.OleDbParameter("@SavedValue", OleDb.OleDbType.VarChar, 50)
            params(1).Value = guiItemsGridView.Rows(e.RowIndex).Cells("Saved Value").Value

            Dim QueryString As String = "UPDATE Items SET [Saved Value]=@SavedValue WHERE ID=@ID"
            myDatabase.objAdapter.UpdateCommand = New OleDb.OleDbCommand(QueryString, DatabaseConnection)

            myDatabase.objAdapter.UpdateCommand.Parameters.AddRange(params)
            myDatabase.objAdapter.UpdateCommand.Prepare()

            Debug.Print(myDatabase.objAdapter.UpdateCommand.CommandText)

を探していなければならないというニーズにアクセスし、作成後のクエリパラメータが追加されました。作成後のコマンドCommandTextされていたとしても、クエリベース UPDATE Items SET [Saved Value]=@SavedValue WHERE ID=@ID でも、パラメータにして渡されます。

私にとっての書きのログのクエリ形がこのチャンクのコードをデバッグその他の地域です。

役に立ちましたか?

解決

私は、パラメータの機能を使用してクエリをログに記録する方法を発見したことはありません。私はその後、言った文字列を消費し、文字列でクエリを作成するに戻すことになった。

QueryString = String.Format("UPDATE Items SET [Saved Value]={0} WHERE ID={1}", SavedValue, ID)

私は、クエリとロギング機能の両方のために、その文字列を消費します。

他のヒント

まうとか。私は構築できるメソッドだというので完璧なものになるように

VB.純益:

Public Sub LogSQL(ByVal cmd As OleDb.OleDbCommand)
    Dim pars As String = ""
    If cmd.Parameters.Count > 0 Then
        pars = " ["
        Dim a As Integer
        For a = 0 To cmd.Parameters.Count - 1
            pars = pars + cmd.Parameters(a).Value.ToString + ","
        Next
        pars = Left(pars, Len(pars) - 1) + "]"
    End If
    Log("SQL=" + cmd.CommandText + pars, LogNivel.INFO)
End Sub

このようなもの:

SQL=SELECT f1,f2 FROM table WHERE fx = ? AND fy = ? [20,35]

私はしばらくの間、周りに検索しようとしたSQL文が挿入されたパラメータを持っていたが返さ取得するには、そのライブラリを使用することを見つけることができませんでした。私が思い付くことができた最高のは、SQL Serverでは、SQL Serverプロファイラました。あなたはそれをオンにし、ストアドプロシージャのメニューの下TSQLメニューとSQL:StmtCompleted下のオプションSP:StmtCompletedをチェックする場合は、次のようにイベントのテキストデータの列が表示されます:

のSQL:StmtCompletedの

EXEC    @return_value = [dbo].[ap_test]
        @User_ID = N'testuser'

のSP:完了

SELECT *
FROM Table1
WHERE User_ID = @User_ID
あなたは、クエリと、それぞれの入力パラメータをログに記録する方法を探していたので

これはUpdateCommand.CommandTextが挿入されるパラメータを撮影した場合しかし、それは間違いなく良いだろうuseful-かもしれません。私はこの機能を思っているとそこに解決策があるかどうか私は見ていきます私自身、数回ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top