如何捕获sql异常及其错误代码(错误号)以识别c#中究竟引发了哪个异常? 例如数据库是脱机的或者其他表中有引用行,所以sql不允许我删除行但是我怎么能确定catch中的问题是什么,以便我可以在我的应用程序中向用户显示消息
答案 0 :(得分:8)
您需要将数据库代码放入try ... catch
块中,并且(假设您对SQL Server使用ADO.NET)然后捕获SqlException
。
try
{
// your database code here
}
catch(SqlException sqlEx)
{
foreach(SqlError error in sqlEx.Errors)
{
// you can inspect the individual errors, their code etc. here
}
}
SqlException
对象将包含一组SqlError
个对象,这些对象描述了非常详细的错误 - 包含行号,错误代码和所有内容。
其他数据库将有类似的结构 - 检查您的文档!
答案 1 :(得分:1)
在.net Exception类层次结构中为每种类型的异常分配了特定的数字,您会发现here上的一些有用的材料