经典ASP + ADODB - 如何查看正在运行的实际查询(用于测试)

时间:2017-08-15 17:08:11

标签: asp-classic adodb

我正在使用经典ASP。我有一个数据库查询的包装函数,它接受一个查询字符串和一个参数数组,并自动创建正确的查询对象并运行查询。非常方便,一直很好。

这是我的问题:在测试时,我经常想看到传递给SQL的查询的确切文本。回到通过串联组装查询的“糟糕的旧时代”,我可以写出字符串。现在我正在使用参数化,这有点棘手。

如何在传递到数据库连接之前查看完全组装的查询字符串?

这是我正在使用的功能,简化了。 (例如,实际函数不假设字符串。)

Public Function pquery( strQuery, params )
    Dim cmd, param, thisParam, rs
    Set cmd = Server.CreateObject( "ADODB.Command" )
    cmd.ActiveConnection = MyConn
    cmd.CommandText = strQuery
    If IsArray( params ) then
        Dim adVarChar : adVarChar = 200
        For Each param In params
            Set thisParam = cmd.CreateParameter( "@p", adVarChar, , len( param ), param )
            cmd.Parameters.Append thisParam
        Next
    End If
    Set rs = cmd.Execute
    Set pquery = rs
End Function

1 个答案:

答案 0 :(得分:1)

我会考虑使用Sql Query Profiler,因为它允许您查看sql文本以及传入的值。它允许您设置断点,以及查看运行查询需要多长时间。但是,这需要将查询发送到实际的数据库(之前您曾要求)。

要事先执行此操作,您需要遍历命令对象中的参数集合,然后使用命令文本属性中的键/值对进行查找/替换。如果你可以使用Profiler,那就最好是hackish了。