c#-SQL异常的粒度更细?

在C#中,是否可以通过SQL异常获得更好的粒度?

我知道很多问题都可能出错,但是我想以不同的方式处理某些情况,并且解析Error消息似乎不是很优雅.

另外,错误消息是由框架创建的还是特定于数据库的?

例如,如果我在INSERT上遇到主键冲突,则错误消息将始终为:

违反主键约束’PK_tblProduct’.无法在对象“ dbo.tblProduct”中插入重复的密钥.

还是特定于SQLServer的.

更新资料

我看起来好像在寻找错误号,知道在哪里可以得到各种错误号?

我可以用一个快速的谷歌做的最好的是:
18456:登录失败
18488:密码已过期

解决方法:

如果捕获到SqlException,则应该可以访问.Number,该错误码为您提供SQL错误号;这可能是您最好的方法……(对于非致命错误,您也可以从InfoMessage事件中获得相同的信息).

当然,这不会在表之间进行区分-您可能会争辩说,如果需要此粒度级别,则应首先检查(在可序列化的隔离级别中,理想情况下使用UPDLOCK),如果存在冲突数据,则会引发自己的错误.

上一篇:解决emoji表情插入数据库报错问题


下一篇:c#-System.Data.SqlClient.SqlException:必须声明标量变量“ @”