câu hỏi của tôi là làm thế nào để xử lý ngoại lệ sql trong C#, là có anyway để kiểm tra những loại ngoại lệ sql ném từ lớp truy cập dữ liệu? Ví dụ, nếu db ném một ngoại lệ ràng buộc duy nhất, hoặc ngoại lệ khóa ngoại, có cách nào để bắt nó từ C#? mẫu xử lý ngoại lệ bạn đang sử dụng cho các ngoại lệ db này là gì?Làm cách nào để xử lý các ngoại lệ SQL cụ thể (ví dụ: vi phạm ràng buộc duy nhất) trong C#?
Trả lời
Catch SqlException
catch(SqlException ex)
{
foreach(SqlError error in ex.Errors)
{
}
}
bạn có thể kiểm tra nội dung tin nhắn, Số lượng và làm chuyển trường hợp vào nó để biết lỗi ...
try {
}
catch (SqlException ex)
{
string str;
str = "Source:"+ ex.Source;
str += "\n"+ "Number:"+ ex.Number.ToString();
str += "\n"+ "Message:"+ ex.Message;
str += "\n"+ "Class:"+ ex.Class.ToString();
str += "\n"+ "Procedure:"+ ex.Procedure.ToString();
str += "\n"+ "Line Number:"+ex.LineNumber.ToString();
str += "\n"+ "Server:"+ ex.Server.ToString();
Console.WriteLine (str, "Database Exception");
}
Hãy nhìn vào lớp documentation of the SqlException, đặc biệt Ví dụ, tại số properties: SqlException.Number
của nó, nên cho phép bạn xác định loại SqlException (ràng buộc duy nhất, khóa ngoài, ...) nào đã xảy ra.
Bạn có thể sử dụng các ngoại lệ được lọc để bắt lỗi cụ thể. VB.NET:
Try
...
Catch ex as SqlException When ex.Number = ...
...
Catch ex as SqlException When ex.Number = ...
...
End Try
C# (Phiên bản 6 trở lên):
try
{
...
}
catch (SqlException ex) when (ex.Number == ...)
{
...
}
catch (SqlException ex) when (ex.Number == ...)
{
...
}
Nó phụ thuộc vào những ngoại lệ và cơ sở dữ liệu của bạn phụ trợ. Bạn cơ sở dữ liệu sẽ tạo ra một mã lỗi duy nhất cho những thứ cụ thể như ràng buộc, quyền, vv nhưng mã lỗi khác nhau từ DB đến DB. Oracle có một MASSIVE pdf (2000+ trang) liệt kê tất cả các lỗi có thể nó có thể ném và tôi chắc chắn Sqlserver có một cái gì đó tương tự. Quan điểm của tôi là bạn tìm kiếm các mã lỗi cụ thể sau đó bạn cần phải trp chỉ những người trong phần bắt và xử lý chúng khác nhau sau đó vô số các lỗi khác bạn có thể nhận được.
- 1. Làm cách nào để xử lý các vi phạm ràng buộc duy nhất của JPA?
- 2. Xử lý các vi phạm ràng buộc một cách tao nhã trong môi trường EJB/JPA?
- 3. Xử lý ngoại lệ trong khung thực thể 4
- 4. Làm cách nào để xử lý các vi phạm ràng buộc db trong giao diện người dùng?
- 5. Khuôn khổ thực thể: Cách xử lý đúng các ngoại lệ xảy ra do các ràng buộc SQL
- 6. Ràng buộc stat_smooth đến một phạm vi cụ thể
- 7. Làm thế nào để tôi nắm bắt ngoại lệ vi phạm ràng buộc từ EclipseLink?
- 8. Phạm vi ngày phạm vi duy nhất trong SQL Server 2008
- 9. Xử lý ngoại lệ JPA/Hibernate
- 10. Xử lý ngoại lệ C++
- 11. Các ràng buộc duy nhất trong couchdb
- 12. Vi phạm ràng buộc duy nhất trong quá trình chèn: tại sao? (Oracle)
- 13. Bắt vi phạm ràng buộc trong psql
- 14. Làm cách nào để nâng cao lại ngoại lệ pl/sql trong khối xử lý ngoại lệ?
- 15. Làm cách nào để viết mã SQL ràng buộc cho một số nằm trong phạm vi?
- 16. Xử lý ngoại lệ theo cách rõ ràng
- 17. Phương pháp được đề xuất xử lý các phạm vi không trùng lặp (ví dụ: lập lịch)
- 18. Xử lý ngoại lệ CPU trong C++
- 19. Làm cách nào để xử lý các ngoại lệ REST?
- 20. Vi phạm ràng buộc duy nhất trên Magento 1.4.0 đến 1.6.2.0 nâng cấp
- 21. Xử lý các ngoại lệ C++ tùy chỉnh trong Cython
- 22. Thực tiễn tốt nhất để xử lý các ngoại lệ khi sử dụng lệnh ràng buộc trong WPF là gì?
- 23. Xử lý ngoại lệ trong Obj-C
- 24. Vi phạm ràng buộc duy nhất của Oracle tham chiếu một ràng buộc dường như không tồn tại
- 25. Trao đổi các giá trị với ràng buộc duy nhất trong Khung thực thể
- 26. Camel - xử lý ngoại lệ trong
- 27. Buộc ràng buộc duy nhất trong GAE
- 28. Làm cách nào để xử lý ngoại lệ?
- 29. Tính toàn vẹnGiá trị khóa trùng lặp lỗi vi phạm ràng buộc duy nhất - django/postgres
- 30. Nhận ORA-00001 (ràng buộc duy nhất bị vi phạm) khi COMMITing?