Перехватить исключение ограничения ССЫЛКА из SQL в C # - PullRequest
3 голосов
/ 25 сентября 2010

Какой будет правильный способ отловить исключение, которое выдает SQL-сервер, когда я удаляю данные с ограничением ссылки из кода C #.
Я хочу показать свое сообщение пользователям как:
«Я не могу удалить данные, потому что они используются»
вместо того, чтобы показывать подобное сообщение:

The DELETE statement conflicted with the REFERENCE constraint ... The conflict ccurred*in database "rampa", table "dbo.doc", column 'kartica_id'.

Ответы [ 2 ]

6 голосов
/ 25 сентября 2010

Используйте это:

try
{
   //Execute delete statement
}
catch (SqlException sqlEx)
{
   //Handle exception
}
finally
{
   //Close connection
}

Все ошибки sql выбрасываются как SqlException, и особых ошибок нет.Чтобы точно определить, что именно было ошибкой, есть свойство SqlException.Number, которое совпадает с кодом ошибки SQL.Вы можете найти список кодов здесь .

2 голосов
/ 25 сентября 2010

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

using System.Data;

try
{
  // code that violates constraint
}
catch (ConstraintException exc)
{
  // build output message you wish using exc.Message and other fields,
  // return cleanly or rethrow as your own exception
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...