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

我想在处理数据库操作时处理不同的问题。

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

在我的C#代码中,我们只有SqlErrors ,它包含SqlErrors集合。 但是有很多严重程度。

如何轻松识别SqlException的原因? 如何确定exception是由于连接问题或身份validation失败或由于查询问题。

我正在使用SQL Server 2005。

尝试这样的事情,这将有助于您处理不同的条件。

使用这样的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; } } 

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

更多信息在这里 。