我正在使用经典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
答案 0 :(得分:1)
我会考虑使用Sql Query Profiler,因为它允许您查看sql文本以及传入的值。它允许您设置断点,以及查看运行查询需要多长时间。但是,这需要将查询发送到实际的数据库(之前您曾要求)。
要事先执行此操作,您需要遍历命令对象中的参数集合,然后使用命令文本属性中的键/值对进行查找/替换。如果你可以使用Profiler,那就最好是hackish了。