在C#中从SQL捕获REFERENCE约束异常

时间:2010-09-25 12:09:37

标签: c# exception-handling error-handling

当我从C#代码中删除带有Reference约束的数据时,捕获SQL服务器异常的正确方法是什么 我想向用户显示如下信息:
 “因为使用了我无法删除数据”
,而不是显示这样的信息:

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

2 个答案:

答案 0 :(得分:6)

使用此:

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

所有sql错误都被抛出为SqlException并且没有特定错误。要确切地找出错误,有属性SqlException.Number与SQL错误代码相同。您可以找到代码列表here

答案 1 :(得分:2)

您可以访问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
}