c# - 如何知道抛出 SqlException 的实际问题?

标签 c# ado.net sqlexception

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

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

在我的 C# 代码中,我们只有 SqlException,它包含 SqlErrors 的集合。然而,有许多严重级别。

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

我正在使用 SQL Server 2005。

最佳答案

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

像这样使用 try catch block :

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;    

       } 
}

关于c# - 如何知道抛出 SqlException 的实际问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4825365/

相关文章:

c# - 释放和更新基于 DHCP 的 IP 地址

c# - Entity Framework 关系未从数据库加载

c# - C# 中 UPDATE 语句的 SQL 参数问题

java - 同名的类/接口(interface)已存在: SQLException and sqlException

c# - 使用 System.Xml.XmlDocument 时是否可以从 System.Xml.XmlNode 获取行号/位置?

c# - 如何在 C# 中实现 YouTrack REST API

c# - 为应用程序中的所有文本框选择 TextBox 中的所有文本

c# - 如何判断 SqlConnection 是否附加了 SqlDataReader?

java - H2 驱动程序无法找到/创建表

c# - 无法连接到 SQL Server 数据库 : Login failed for user 'sa' '