【问题标题】:Detecting which of multiple Unique Keys was violated?检测多个唯一键中的哪一个被违反?
【发布时间】:2017-04-24 18:51:21
【问题描述】:

我需要在我的 C# Winforms 应用程序中捕获 UniqueConstarints。在我以前的版本中,我只有一个UniqueKey,即UK_StudentNo,所以当用户尝试为不同的学生提供相同的学生编号时,我使用下面的代码和SQLException 约束编号2627 发现了违规行为。

catch (SqlException ex)
            {
                if (ex.Number==2627)
                {
                    MessageBox.Show("Student number already given");
                }
                else
                {
                    MessageBox.Show("Database Error !");
                }
                throw;
            }

但是现在,我有另一个UniqueKey,即UK_Student_NationalID,我无法将这两个UniqueKeys 与它们的ConstraintNumber 区别开来,所以我无法理解哪个UniqueKey 违规引发了异常。当我想显示 "Student number already given" 或 "NationalID already given" 之类的消息时,如何区分这 2 个 UniqueKeys

【问题讨论】:

  • 检查ex.Message,它应该说明违反了哪个约束。
  • @RBarryYoung ex.Message.contains("UK_StudentNo") 真的为我工作,谢谢
  • 我会添加它作为答案。

标签: c# .net sql-server constraints


【解决方案1】:

查看ex.Message中的异常消息,它应该指出违反了哪个约束。

您还可以在ex.Errors 集合中找到更多信息。

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 2016-10-24
    • 2019-05-03
    • 2011-05-25
    • 2020-07-22
    相关资源
    最近更新 更多