我的数据库中有两个唯一字段,用户可能会尝试通过我的网页添加一个(或两个)这些列中已存在的值。从字面上看,有2个文本框,这些文本框将引用SQL中的2列。
我希望错误捕获并向用户显示在创建副本时不允许使用哪个单词(或单词)。
SQL阻止我输入副本,但是,它会在第一次尝试时出错。意思是,如果用户试图输入2个单词并且两个都是重复的,则SQL会在第一个文本框上出错,这意味着用户可以更新textBox1值,再次尝试然后被告知关于第二个文本框。这对用户来说并不好,因为它很慢但我不知道最好的方法是什么。
答案 0 :(得分:1)
在我看来,你最后的防守是数据库!你应该阻止查询到达那里!
对我来说,我会查询数据库,并为这两列检索所有行的2个值。
然后,当用户尝试提交时,我会检查列表以查看它是否存在。这意味着不会抛出任何异常。然后我可以决定如何在屏幕上显示这些信息。
当然,这很好,取决于你有多少行,如果你有数百万可能这不是很好,你可能想先使用标量变量ping数据库,看看该值是否已经存在! / p>
答案 1 :(得分:0)
SqlException
非常详细,你会得到一个完整的堆栈跟踪,而不是导致异常的几个特定字段。
有时SqlException
也不会指定足够的内容,就像遇到内部失败的存储过程一样。
最好的想法是在点击数据库之前对字段值,FK约束,非空值检查等进行各种验证。
点击数据库然后让用户知道由于某些异常而不建议这是一个很大的性能瓶颈。