2012-09-01 65 views
1

我有一个包含项目名称的表格。在asp.net中,我有一个文本框,用户可以输入新项目添加到表格中。我需要限制用户在表格中输入重复的项目名称。当用户在表格中已经存在的文本框中输入文本(项目名称)并单击保存按钮时,我需要显示消息/验证项目已经存在。我该怎么做呢??如何限制用户在表格中输入重复值?

回答

0

你不写任何代码,以便:

假设你正在使用Ajax,您可以检查数据库为不存在的项目,一旦改变文本框的文本属性。

如果您使用的是纯粹的asp.net,那么您可以尝试将该项添加到数据库并捕获异常。如果插入逻辑中存在异常,并且它与重复键(错误号2601)相关,则可以使文本框可视化无效。

希望它服务。

0

可以execcute以下查询:

SELECT checking_col_name 
FROM your_table 
WHERE checking_col_name = your_textbox_value 
GROUP BY checking_col_name 
HAVING (COUNT(checking_col_name) > 0) 

如果上面的查询返回该行,那么你就可以推断出该值在给定表的列已经存在,因此你可以在你的代码,据此适用条件.....

由于Wiktor Zychla建议在处理多用户环境时上述查询可能有问题,所以我建议您检查Constraint .....你可以有UNIQUE Constraint确保不会有没有重复行(将只有唯一值)....如果执行查询插入重复e值会抛出错误,您可以在代码中追踪并因此适用于您的条件......

+0

这仍然留下一秒之间你检查重复和实际插入记录到数据库中。如果两个用户同时添加数据,使用您的方法,他们仍然可能会添加重复项。你应该在你的应用程序中锁定(这会降低性能并且不能在服务器场中工作)或者对数据库有一个检查限制(它是可靠的并且总是工作的)。 –

+0

是的,更好地检查独特的约束.....感谢提醒我的问题.... –

3

将“unique constraint”添加到名称列上的表格中。然后,当有人试图添加重复名称时,SQL Server会提示执行。您必须处理客户端代码中的例外情况,以向用户显示合理的消息。