Просмотр параметризованного запроса в VBScript ADODB.Command
Как я могу просмотреть код SQL моего запроса после того, как он был параметризован Parameters.Append
2 ответа
Решение
Ты не можешь
Параметризованные запросы не строятся как строки, которые вы можете вывести, когда будете готовы.
Это всегда двухэтапный процесс:
- Подготовьте запрос в поле "SELECT foo FROM foo_table WHERE id =?", Отправьте его на сервер (и верните идентификатор).
- Отправьте все параметры для заполнения вопросительных знаков на сервер вместе с идентификатором подготовленного утверждения.
Ни в один момент времени оба (запрос и параметры) не выходят на связь за пределами сервера базы данных. (Это причина, почему параметризованные запросы намного более безопасны, чем строки 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, включая параметры. Я считаю это полезным для целей отладки.