2017-08-24 48 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

相关问题