2017-04-24 91 views
2

我需要在我的C#Winforms应用程序中捕获Unique Constarints。在我以前的版本中,我只有一个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,我不能跟这些不同的2 UniqueKeys他们ConstraintNumber所以我无法理解这唯一键违反抛出异常。我怎样才能让这2个UniqueKeys之间的差异时,我想在ex.Message显示像"Student number already given""NationalID already given"

+2

检查'ex.Message',它应该说哪个约束被违反了。 – RBarryYoung

+1

@RBarryYoung'ex.Message.contains(“UK_StudentNo”)'真的对我有用,thx –

+0

我会将其添加为答案。 – RBarryYoung

回答

2

查看信息异常的消息时,它应说明哪些约束被违反。

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