当前位置:  开发笔记 > 后端 > 正文

在.NET中捕获SQL唯一键异常

如何解决《在.NET中捕获SQL唯一键异常》经验,为你挑选了1个好方法。

我想知道是否有人有更优雅的方法来检查.NET中的SQL的唯一键异常,而不是解析错误消息?现在我在SQL中调用sproc,然后在.NET中使用try catch块.在try catch块中我解析错误消息,它是一个唯一键错误我向调用类抛出一个自定义错误的实例,如果不是我只是将原始异常抛出到调用类.这对我来说似乎非常低效.



1> marc_s..:

如果捕获到SqlException,则应该能够枚举包含许多"SqlError"对象的"Errors"集合.

SqlError还具有"Class"和"Number"等属性 - 唯一的键冲突是class = 14和number = 2601.检查这些数字以准确找到您的错误.

当您尝试在SQL Management Studio中执行查询时,这些错误代码相同:

消息2601,级别14,状态1,行1
无法在对象中插入重复的键行..........
语句已终止.

"Msg"转换为SqlError上的"Number"属性,"Level"转换为"Class".

try
{
  _cmd.ExecuteNonQuery();
}
catch(SqlException sqlExc)
{
   foreach (SqlError error in sqlExc.Errors)
   {
      string msg = string.Format("{0}: {1}", error.Number, error.Message);
   }
}

这样,您就可以轻松且准确地识别出"违反唯一约束"错误.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有