Tôi muốn nói với người dùng rằng một bản ghi không bị xóa vì nó có dữ liệu con, nhưng làm thế nào tôi có thể chắc chắn rằng ngoại lệ đã bị ném vì vi phạm khóa ngoại? Tôi thấy rằng có một lớp sqlexception được sử dụng cho tất cả các ngoại lệ sql.Làm cách nào để biết liệu một SQLexception đã bị ném vì vi phạm khóa ngoại?
17
A
Trả lời
39
Giả sử bạn đang sử dụng SQL Server.
Sử dụng teh Googles - http://blogs.msdn.com/tomholl/archive/2007/08/01/mapping-sql-server-errors-to-net-exceptions-the-fun-way.aspx
try
{
# SQL Stuff
}
catch (SqlException ex)
{
if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error
{
switch (ex.Errors[0].Number)
{
case 547: // Foreign Key violation
throw new InvalidOperationException("Some helpful description", ex);
break;
case 2601: // Primary key violation
throw new DuplicateRecordException("Some other helpful description", ex);
break;
default:
throw new DataAccessException(ex);
}
}
}
Trường hợp 547 là người đàn ông của bạn.
CẬP NHẬT Ở trên là mã mẫu và không nên sử dụng. Vui lòng theo liên kết để giải thích lý do.
-2
Bạn có thể viết mã ngoại lệ dự kiến của bạn trong khối Try nếu có ngoại lệ sẽ được ném nó sẽ được bắt thêm bây giờ bạn có thể nhận được lỗi number.now có thể kiểm tra nó là một Ngoại vi phạm chính hay không
try
{
//your deletetion code
}catch (SqlException ex)
{
if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error
{
switch (ex.Errors[0].Number)
{
case 547: // Foreign Key violation
lblError.Text = "Cannot Delete this Record this is associated with other record...!";
break;
default:
throw;
}
}
}
+1
Vui lòng không lặp lại các câu trả lời khác –
Các vấn đề liên quan
- 1. Làm thế nào để biết vấn đề thực tế vì SqlException được ném?
- 2. Làm cách nào để ném ngoại lệ từ phạm vi của người gọi?
- 3. Làm cách nào để xác định ngoại lệ nào "x []" có thể bị ném?
- 4. Các khóa ngoại trong postgresql có thể bị vi phạm bởi kích hoạt
- 5. Có cách nào để biết nếu một ngoại lệ MS CRM đã được ném bởi một plugin?
- 6. java TreeSet ném IllegalArgumentException: chìa khóa ra khỏi phạm vi
- 7. Làm cách nào để biết liệu một HttpResponse đã bị đóng chưa?
- 8. Làm cách nào để tránh vi phạm PMD CloseResource?
- 9. Làm cách nào để biết liệu QMutex có bị khóa hay không?
- 10. Làm cách nào để tránh ngoại lệ vi phạm truy cập khi gọi một Dll CUDA?
- 11. Làm thế nào để chấm dứt một sợi trong một phạm vi xem phạm vi đậu?
- 12. Chức năng-phạm vi constructor tĩnh của đối tượng ném một ngoại lệ
- 13. IntegrityError: vi phạm khóa ngoài khi xóa
- 14. Việc chuyển đổi loại dữ liệu datetime2 thành loại dữ liệu datetime dẫn đến một phạm vi ngoài phạm vi?
- 15. Làm cách nào để kiểm tra xem một ngoại lệ cụ thể có bị ném không?
- 16. Mạo danh một người sử dụng trong phạm vi sai không ném ngoại lệ
- 17. Làm thế nào để làm cho mã chạy chỉ khi một ngoại lệ đã được ném?
- 18. Làm thế nào để tái ném một ngoại lệ
- 19. Làm cách nào để tìm lý do tại sao tôi nhận được "Ngoại lệ loại 'System.Web.HttpUnhandledException' đã bị ném"?
- 20. Làm cách nào để biết liệu một quá trình MySQL có bị kẹt không?
- 21. Làm cách nào để thực thi Iterator đối phó với các ngoại lệ đã kiểm tra?
- 22. khóa phạm vi trong java
- 23. Cách thích hợp để biết liệu một Hoạt động đã bị phá hủy
- 24. Làm cách nào để cho Delphi biết tôi đã xử lý ngoại lệ?
- 25. Phát hiện khi destructor chạy do ngoại lệ bị ném?
- 26. Làm cách nào để xác định xem đối tượng ActiveRecord của tôi có vi phạm một khóa/chỉ mục cơ sở dữ liệu duy nhất không?
- 27. Phạm vi khóa trong C#: là đối tượng trả về vẫn "bị khóa"?
- 28. Làm thế nào để ném SQLException trong thủ tục lưu trữ
- 29. Làm thế nào để biết khi nào một Ổ cắm đã bị ngắt kết nối
- 30. Có cách nào để biết id luồng trong một quy trình khác có ném ngoại lệ không?
Nếu bạn theo liên kết và đọc xuống, bạn sẽ nhận thấy rằng mã ở trên được đưa ra làm ví dụ về cách * không * làm như vậy ... – bornfromanegg
Hoàn toàn chính xác - Tôi chỉ có ý định có mã này ở đây để hiển thị phiên bản mở rộng của việc bắt lỗi. Tôi cho rằng tôi nên đặt một thông báo không sử dụng (vì đó là vấn đề với trang khác). – aronchick