我希望在进行数据库操作时,能够针对不同的问题采取不同的处理方式。
例如,操作可能因为错误的数据库凭据或网络问题而失败。或者,如果在int类型列中传递了字符串值,则操作可能会失败,因为查询不正确。
在我的C#代码中,我们只有一个SqlException
,其中包含了SqlErrors
的集合。然而,有许多严重程度级别。
如何轻松地确定SqlException的原因?如何确定异常是由于连接问题、身份验证失败还是由于查询问题引起的?
我正在使用SQL Server 2005。
我希望在进行数据库操作时,能够针对不同的问题采取不同的处理方式。
例如,操作可能因为错误的数据库凭据或网络问题而失败。或者,如果在int类型列中传递了字符串值,则操作可能会失败,因为查询不正确。
在我的C#代码中,我们只有一个SqlException
,其中包含了SqlErrors
的集合。然而,有许多严重程度级别。
如何轻松地确定SqlException的原因?如何确定异常是由于连接问题、身份验证失败还是由于查询问题引起的?
我正在使用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;
}
}