当我从C#代码中删除带有Reference约束的数据时,捕获SQL服务器异常的正确方法是什么
我想向用户显示如下信息:
“因为使用了我无法删除数据”
,而不是显示这样的信息:
The DELETE statement conflicted with the REFERENCE constraint ... The conflict ccurred*in database "rampa", table "dbo.doc", column 'kartica_id'.
答案 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
}