从数据库读取时如何捕获重复值并显示消息框?
How to capture duplicate values and show message box while reading from database?
我有一个使用列表对象的 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
}
}
如果我没看错,你有一个应用程序,用户可以在其中插入新行,并且你想防止重复的条目。
如果这是正确的,您可以添加一个 returns 错误代码的数据库函数,您可以使用代码中的 SqlCommand
调用此函数。
我有一个使用列表对象的 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
}
}
如果我没看错,你有一个应用程序,用户可以在其中插入新行,并且你想防止重复的条目。
如果这是正确的,您可以添加一个 returns 错误代码的数据库函数,您可以使用代码中的 SqlCommand
调用此函数。