7

我想以不同的方式处理不同的问题,同时进行数据库操作。

例如,由于错误的数据库凭据或网络问题,操作可能会失败。或者它可能会因为查询不正确而失败(如果在 int 类型列中传递字符串值)

在我的 C# 代码中,我们只有SqlExceptionwhich 具有SqlErrors. 然而,有许多严重级别。

如何轻松确定 SqlException 的原因?我如何确定异常是由于连接问题或身份验证失败还是由于查询问题。

我正在使用 SQL Server 2005。

4

2 回答 2

10

尝试这样的事情,这将帮助您处理不同的情况。

使用这样的 try catch 块:

try    
{
  ...
  ...
}
catch (SqlException ex)
{
  switch (ex.Number) 
    { 
        case 4060: // Invalid Database 
                  ....
                  break;

        case 18456: // Login Failed 

                  ....

                  break;

        case 547: // ForeignKey Violation 

                  ....

                  break;

        case 2627: 
                // Unique Index/ Primary key Violation/ Constriant Violation 

                  ....

                  break;

        case 2601: // Unique Index/Constriant Violation 

                  ....

                  break;

        default: 

                  ....

                  break;    

       } 
}
于 2011-01-28T06:24:37.410 回答
1

SQLException公开Class应该为您提供严重性级别的属性。

更多信息在这里

于 2011-01-28T06:10:07.147 回答