如何从数据库中读取时捕获重复值并显示消息框?

时间:2017-08-24 14:56:11

标签: c# sqlconnection csla executereader

我使用了一个使用列表对象的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
                }
            }

1 个答案:

答案 0 :(得分:0)

如果我做得对,你有一个应用程序,用户可以在其中插入新行,并且你想防止重复的条目。

如果这是正确的,您可以添加一个返回ErrorCode的数据库函数,您可以使用代码中的SqlCommand来调用此函数。