2017-08-24 42 views
0

我有一個使用列表對象的DataGrid。我想阻止用戶輸入重複值到數據庫中。如何在從數據庫讀取數據時捕獲重複值並顯示消息框?

我的存儲過程已經可以防止重複數據進入數據庫,但我想向用戶顯示更多描述性消息,說明他們無法輸入重複值。

下面是我的代碼,在那裏我通過存儲過程插入值:

using (var cn = ConnectionManager<SqlConnection>.GetManager(Database)) 
      using (var cmd = new SqlCommand("Save", cn.Connection)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 

       cmd.Parameters.AddWithValue("@TableId", ReadProperty(TableIdProperty)); 
       cmd.Parameters.AddWithValue("@Q1", ReadProperty(Q1Property).ToUpper()); 
       cmd.Parameters.AddWithValue("@Q2", ReadProperty(Q2Property)); 

       using (var dr = new SafeDataReader(cmd.ExecuteReader())) 
       { 
        //Would like to capture duplicates here if a record already exists with same Q1 and Q2 values 
        if (dr.Read()) 
         LoadProperties(dr); 
        else 
         dr.NextResult(); // sproc error happens here 
       } 
      } 
+0

你能分享存儲過程的代碼嗎?它如何防止重複值?如果有重複的值,是否會引發任何錯誤? –

+0

它會引發應用程序錯誤並「回滾」插入。 – Mihika

+0

我在其引起錯誤的地方添加了sproc代碼。 – Mihika

回答

0

如果我這樣做是正確,你有一個應用程序,用戶可以插入新行,並要防止重複條目。

如果這是正確的,您可以添加一個返回ErrorCode的數據庫函數,您可以使用代碼中的SqlCommand來調用此函數。

+0

是的,你是對的。當他們輸入新的行時,我想防止重複的條目。你能幫我用SqlCommand嗎? – Mihika

+0

你的意思是如何執行? –

+0

是的,我的意思是我不明白如何編寫一個你推薦的數據庫函數。 – Mihika

相關問題