簡體   English   中英

如何捕獲多個SQL異常?

[英]How to catch multiple sql exception?

我的數據庫中有兩個唯一字段,用戶可能會嘗試通過我的網頁添加一個值,這些值已經存在於這些列中的一個(或兩個)列中。 從字面上看,有2個文本框,它們將引用SQL中的2列。

我希望捕獲錯誤,並向用戶顯示不允許在哪個單詞(或多個單詞)中創建重復項。

SQL阻止我輸入重復項,但是第一次嘗試將出錯。 這意味着,如果用戶嘗試輸入2個單詞並且兩個單詞都是重復的,則SQL將在第一個文本框上出錯,這意味着用戶可以更新textBox1的值,然后重試,然后被告知第二個文本框。 這對用戶不利,因為它很慢,但是我不知道最好的方法是什么。

我認為您的最后一道防線就是數據庫! 您應該防止查詢到達那里!

對我來說,我將查詢數據庫並檢索僅這兩行的所有行的2個值。

然后,當用戶嘗試提交時,我將檢查列表以查看其是否存在。 這意味着不會引發異常。 然后,我可以決定如何在屏幕上顯示此信息。

當然,這取決於所擁有的行數,這很好,如果您有數百萬行,則可能不太好,您可能想先使用標量變量對數據庫執行ping操作,以查看該值是否已存在!

SqlException非常冗長,您將獲得完整的stacktrace,而不是引起異常的一些特定字段。

同樣有時候SqlException可能沒有指定足夠的值,就像遇到內部失敗的存儲過程一樣。

最好的主意是在命中數據庫之前對字段值,FK約束,而不是空檢查等進行各種驗證。

最好不要命中數據庫,然后由於某些異常而讓用戶知道,這是一個很大的性能瓶頸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM