Classic ASP + ADODB -- 如何查看实际查询 运行(用于测试)
Classic ASP + ADODB -- how to see actual query being run (for testing)
我正在使用经典 ASP。我有一个用于数据库查询的包装函数,它接受一个查询字符串和一个参数数组,并自动创建适当的查询对象并运行查询。非常好用,一直很好用。
这是我的问题:测试时,我经常想查看传递给 SQL 的查询的确切文本。回到通过串联组装查询的 "bad old days" 中,我可以只写出字符串。现在我正在使用参数化,它有点棘手。
如何在完全组装的查询字符串传递到数据库连接之前查看它?
这是我正在使用的功能,经过简化。 (例如,实际函数不假定字符串。)
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
我会考虑使用 Sql Query Profiler,因为它可以让您查看 sql 文本以及传入的值。它还可以让您设置断点查看 运行 查询需要多长时间。但是,这需要将查询发送到实际数据库(您之前已经请求过)。
要预先执行此操作,您需要遍历命令对象中的参数集合,然后使用命令文本 属性 中的 key/value 对执行 find/replace。如果您可以使用 Profiler,那充其量只是骇人听闻。
我正在使用经典 ASP。我有一个用于数据库查询的包装函数,它接受一个查询字符串和一个参数数组,并自动创建适当的查询对象并运行查询。非常好用,一直很好用。
这是我的问题:测试时,我经常想查看传递给 SQL 的查询的确切文本。回到通过串联组装查询的 "bad old days" 中,我可以只写出字符串。现在我正在使用参数化,它有点棘手。
如何在完全组装的查询字符串传递到数据库连接之前查看它?
这是我正在使用的功能,经过简化。 (例如,实际函数不假定字符串。)
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
我会考虑使用 Sql Query Profiler,因为它可以让您查看 sql 文本以及传入的值。它还可以让您设置断点查看 运行 查询需要多长时间。但是,这需要将查询发送到实际数据库(您之前已经请求过)。
要预先执行此操作,您需要遍历命令对象中的参数集合,然后使用命令文本 属性 中的 key/value 对执行 find/replace。如果您可以使用 Profiler,那充其量只是骇人听闻。