如何在从数据库读取数据时捕获重复值并显示消息框?
问题描述:
我有一个使用列表对象的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
}
}
你能分享存储过程的代码吗?它如何防止重复值?如果有重复的值,是否会引发任何错误? –
它会引发应用程序错误并“回滚”插入。 – Mihika
我在其引起错误的地方添加了sproc代码。 – Mihika