Просмотр параметризованного запроса в VBScript ADODB.Command

Как я могу просмотреть код SQL моего запроса после того, как он был параметризован Parameters.Append

2 ответа

Решение

Ты не можешь

Параметризованные запросы не строятся как строки, которые вы можете вывести, когда будете готовы.

Это всегда двухэтапный процесс:

  1. Подготовьте запрос в поле "SELECT foo FROM foo_table WHERE id =?", Отправьте его на сервер (и верните идентификатор).
  2. Отправьте все параметры для заполнения вопросительных знаков на сервер вместе с идентификатором подготовленного утверждения.

Ни в один момент времени оба (запрос и параметры) не выходят на связь за пределами сервера базы данных. (Это причина, почему параметризованные запросы намного более безопасны, чем строки SQL, сделанные вручную).

Вы можете написать некоторый простой код для анализа результатов по моде, просматривая параметры. Вот пример 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, включая параметры. Я считаю это полезным для целей отладки.

Другие вопросы по тегам