Как получить вывод IDbCommand в БД? (.СЕТЬ) - PullRequest
1 голос
/ 20 января 2009

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

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

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

Ответы [ 4 ]

3 голосов
/ 20 января 2009

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

0 голосов
/ 21 января 2009

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

Что-то вроде этого должно сделать это:

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

}
0 голосов
/ 20 января 2009

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

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

0 голосов
/ 20 января 2009

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

...