Как получить вывод IDbCommand в БД? (.СЕТЬ)

У меня есть объект SqlCommand, и я выполняю его метод ExecuteNonQuery. Запрос не выполняется, но я не вижу, как получить запрос для его отладки. Не могли бы вы помочь мне?

Обновление В настоящее время я использую Wireshark (tcpdump) для чтения команды, но я думаю, что это не лучшее решение

Обновление Свойство CommandText предоставляет только имя хранимой процедуры. Я хочу всю команду, с параметрами.

4 ответа

Решение

Вы можете использовать SQL Profiler, чтобы увидеть, что запрос / вызов хранимой процедуры отправляется вместе с параметрами.

Если вы также хотите просмотреть параметры, вам нужно посмотреть на свойство Parameters объекта команды (а не только CommandText) и посмотреть на каждый параметр в этой коллекции, чтобы извлечь значение и тип данных, если это то, что вас интересует. в.

Теперь звучит так, будто вы пытаетесь отладить саму хранимую процедуру, а не код C#, верно? В этом случае вам необходимо подключить отладчик Visual Studio к серверу SQL для отладки кода T-SQL. Я знаю, что вы можете сделать это с Oracle, поэтому я предполагаю, что вы сможете сделать это прямо из коробки с SQL-сервером.

Вы можете получить значение свойства CommandText вашего SqlCommand? Если выдается исключение, вы можете его перехватить и получить доступ к свойству CommandText, которое даст вам команду SQL, как вы ее установили. Конечно, если он содержит параметры, параметры не будут заменены соответствующими значениями.

Вероятно, вам все равно следует использовать блок try/catch вокруг вашего SQL, но плюс в том, что вы можете легко вернуть командную строку SQL вместе с ошибкой.

Примерно так должно это сделать:

try
{
    ***Execute your SQL query here***
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
    Console.WriteLine(***My SQL command string***);

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