【发布时间】:2012-09-01 18:59:17
【问题描述】:
我有一个包含项目名称的表格。在 asp.net 中,我有一个文本框,用户可以在其中输入要添加到表中的新项目。我需要限制用户在表中输入重复的项目名称。当用户在表格中已经存在的文本框中输入文本(项目名称)并单击保存按钮时,我需要显示该项目已经存在的消息/验证。我该怎么做??
【问题讨论】:
标签: c# asp.net sql sql-server-2008 tsql
我有一个包含项目名称的表格。在 asp.net 中,我有一个文本框,用户可以在其中输入要添加到表中的新项目。我需要限制用户在表中输入重复的项目名称。当用户在表格中已经存在的文本框中输入文本(项目名称)并单击保存按钮时,我需要显示该项目已经存在的消息/验证。我该怎么做??
【问题讨论】:
标签: c# asp.net sql sql-server-2008 tsql
在“名称”列中将unique constraint 添加到您的表中。然后,当有人尝试添加重复名称时,SQL Server 将引发 execption。您必须处理客户端代码中的异常,向用户显示合理的消息。
【讨论】:
你没有写任何代码,所以:
假设您使用的是 Ajax,一旦文本框的文本属性发生更改,您可以检查数据库中是否存在该项目。
如果您使用的是普通的 asp.net,那么您可以尝试将项目添加到数据库并捕获异常。如果您的插入逻辑中存在异常并且它与重复键相关(错误号 2601),那么您会使文本框视觉对象无效。
希望它有用。
【讨论】:
您可以执行以下查询:
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,以确保不会有重复的行(将只有唯一值)....如果执行查询以插入重复值,则会引发错误,您可以在代码中跟踪该错误并因此适用于您的条件......
【讨论】:
您可以在表的Name 列上使用unique constraint and unique index。 SQL Server 将在输入重复名称时引发异常。
【讨论】: