2017-04-24 34 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集合中找到更多信息。