代码之家  ›  专栏  ›  技术社区  ›  Josh

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

  •  2
  • Josh  · 技术社区  · 17 年前

    如何查看查询的SQL代码 之后 它已由参数参数化。追加

    2 回复  |  直到 14 年前
        1
  •  5
  •   Tomalak    17 年前

    你不能。

    参数化查询不像字符串那样构建,您可以在准备就绪时输出。

    1. 在“SELECT foo from foo_table WHERE id=?”的from中准备一个查询,将其发送到服务器(并获取一个标识符)。
    2. 将所有用于填充问号的参数以及准备好的语句的标识符一起发送到服务器。

    在任何时候,这两个(查询和参数)都不会在数据库服务器之外联系。(这就是为什么参数化查询比手工生成的SQL字符串更安全的原因)。

        2
  •  0
  •   Tristan Putman    8 年前

    您可以编写一些简单的代码,通过循环遍历参数,以某种方式解析返回的结果。下面是一个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。我发现这对于调试非常有用。