在VBScript ADODB.Command中查看参数化查询

时间:2009-02-06 06:53:36

标签: sql asp-classic vbscript ado

如何通过Parameters.Append参数化后查看查询的SQL代码

2 个答案:

答案 0 :(得分:3)

你不能。

参数化查询的构建方式不像您准备好时可以输出的字符串。

这始终分为两个步骤:

  1. 在“SELECT foo FROM foo_table WHERE id =?”中准备一个查询,将其发送到服务器(并返回一个标识符)。
  2. 发送所有参数以填充问号到服务器,以及准备好的声明的标识符。
  3. 在任何时候,两个(查询和参数)都不会在数据库服务器外部联系。 (这就是为什么参数化查询比手工制作的SQL字符串更安全的原因。)

答案 1 :(得分:0)

您可以编写一些简单的代码,通过循环参数来解析结果。这是一个VBScript / Classic ASP示例:

        queryPlain = command.CommandText
        For Each p In command.Parameters
           If (p.type = adChar) or (p.type = adBSTR) or (p.type = adDBDate) Then
                queryPlain = Replace(queryPlain , "?", "'" & p.value & "'",1,1)
            Else
                queryPlain = Replace(queryPlain , "?", p.value,1,1)
            End If
        Next

以下是类似于VB.net的内容

        queryPlain = command.CommandText
        For Each p As SqlParameter In command.Parameters
            queryPlain = queryPlain.Replace(p.ParameterName, p.Value.ToString())
        Next

现在queryPlain包含包含参数的SQL。我发现这对调试很有用。