首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C#中处理特定的SQL异常(例如,违反唯一约束)?

如何在C#中处理特定的SQL异常(例如,违反唯一约束)?
EN

Stack Overflow用户
提问于 2009-11-03 19:56:40
回答 5查看 20K关注 0票数 7

我的问题是如何处理c#中的sql异常,有没有办法检查一下数据访问层抛出了什么样的sql异常?例如,如果db抛出唯一约束异常或外键异常,有没有办法从c#捕获它?对于这些数据库异常,您使用的异常处理模式是什么?

EN

回答 5

Stack Overflow用户

发布于 2009-11-03 20:07:25

看一看documentation of the SqlException类,特别是它的properties:例如,SqlException.Number应该允许您识别哪种类型的SqlException (唯一约束、外键等)。发生了。

您可以使用筛选的异常来捕获特定的错误。VB.NET:

代码语言:javascript
运行
复制
Try
    ...
Catch ex as SqlException When ex.Number = ...
    ...
Catch ex as SqlException When ex.Number = ...
    ...
End Try

C# (版本6及以上):

代码语言:javascript
运行
复制
try
{
    ...
}
catch (SqlException ex) when (ex.Number == ...)
{
    ...
}
catch (SqlException ex) when (ex.Number == ...)
{
    ...
}
票数 8
EN

Stack Overflow用户

发布于 2009-11-03 20:04:32

您可以检查消息文本,编号,并在其上进行大小写切换,以了解错误...

代码语言:javascript
运行
复制
try {
}
catch (SqlException ex)
{
 string str;
        str = "Source:"+ ex.Source;        
        str += "\n"+ "Number:"+ ex.Number.ToString();
        str += "\n"+ "Message:"+ ex.Message;
        str += "\n"+ "Class:"+ ex.Class.ToString ();
        str += "\n"+ "Procedure:"+ ex.Procedure.ToString();
        str += "\n"+ "Line Number:"+ex.LineNumber.ToString();
        str += "\n"+ "Server:"+ ex.Server.ToString();

        Console.WriteLine (str, "Database Exception");
}
票数 1
EN

Stack Overflow用户

发布于 2009-11-03 20:07:43

这取决于异常和您的数据库后端。您的数据库将为特定的内容(如约束、权限等)生成唯一的错误代码,但该错误代码在不同的数据库中有所不同。甲骨文有一个庞大的pdf (2000+ pages),其中列出了它可能抛出的每一个可能的错误,我相信Sqlserver也有类似的东西。我的观点是,你需要寻找特定的错误代码,然后你需要对catch部分中的那些代码进行trp,并以不同的方式处理它们,而不是你可以得到的大量其他错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1666887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档