1

我的数据库中有两个唯一字段,用户可能会尝试通过我的网页添加一个(或两个)列中已经存在的值。从字面上看,有 2 个文本框,它们将引用 SQL 中的 2 列。

我希望捕获错误并向用户显示不允许创建副本的单词(或单词)。

SQL 阻止我输入重复的,但是,它会在第一次尝试时出错。这意味着,如果用户尝试输入 2 个单词并且两个单词都是重复的,那么 SQL 将在第一个文本框上出错,这意味着用户可以更新 textBox1 的值,然后再试一次,然后被告知第二个文本框。这对用户不利,因为它很慢,但我不知道最好的方法是什么。

4

2 回答 2

1

在我看来,您的最后一道防线是数据库!您应该阻止查询到达那里!

对我来说,我会查询数据库并检索这 2 列的所有行的 2 个值。

然后,当用户尝试提交时,我会检查列表以查看它是否存在。这意味着不会抛出异常。然后我可以决定如何在屏幕上显示这些信息。

当然,这取决于你有多少行,如果你有几百万行,这可能不是很好,你可能想先使用一个标量变量来 ping 数据库,看看值是否已经存在!

于 2013-03-27T10:15:22.393 回答
0

SqlException非常冗长,您将获得完整的堆栈跟踪,而不是导致异常的一些特定字段。

有时SqlException也不会指定足够的内容,例如遇到内部失败的存储过程..

最好的想法是在访问数据库之前对字段值、FK 约束、非空检查等进行各种验证。

完全不建议点击数据库然后由于某些异常而让用户知道,因为这是一个很大的性能瓶颈。

于 2013-03-27T08:57:41.793 回答