Как узнать актуальную проблему, из-за которой выбрасывается SqlException? - PullRequest
7 голосов
/ 28 января 2011

Я хочу по-разному решать различные проблемы при выполнении операций с базой данных.

Например, операция может завершиться ошибкой из-за неправильных учетных данных базы данных или из-за проблем с сетью.Или может произойти сбой, потому что запрос неверен (если в столбце типа int передается строковое значение)

В моем коде C # у нас есть только SqlException, у которого есть коллекция SqlErrors.Однако существует много уровней серьезности.

Как я могу легко определить причину SqlException?Как определить исключение из-за проблемы с подключением или сбоя аутентификации или из-за проблемы с запросом.

Я использую SQL Server 2005.

Ответы [ 2 ]

9 голосов
/ 28 января 2011

Попробуйте что-то вроде этого, это поможет вам справиться с различными условиями.

используйте блок try catch:

try    
{
  ...
  ...
}
catch (SqlException ex)
{
  switch (ex.Number) 
    { 
        case 4060: // Invalid Database 
                  ....
                  break;

        case 18456: // Login Failed 

                  ....

                  break;

        case 547: // ForeignKey Violation 

                  ....

                  break;

        case 2627: 
                // Unique Index/ Primary key Violation/ Constriant Violation 

                  ....

                  break;

        case 2601: // Unique Index/Constriant Violation 

                  ....

                  break;

        default: 

                  ....

                  break;    

       } 
}
1 голос
/ 28 января 2011

SQLException предоставляет свойство Class, которое должно указывать уровень серьезности.

Дополнительная информация здесь .

...