我的問題是如何處理C#中的SQL異常,是否有無論如何檢查什麼樣的SQL異常從數據訪問層拋出?例如,如果db引發一個唯一的約束異常或外鍵異常,有什麼辦法從c#中捕獲它?這些db異常使用的異常處理模式是什麼?如何在C#中處理特定的SQL異常(例如,唯一的約束違例)?
6
A
回答
0
抓SQLEXCEPTION
catch(SqlException ex)
{
foreach(SqlError error in ex.Errors)
{
}
}
1
你可以檢查郵件文本,數字,而在其切換的情況下知道錯誤...
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");
}
7
看一看的documentation of the SqlException類,特別是,例如,在其properties:SqlException.Number
中,應該允許您確定發生了哪種類型的SqlException(唯一約束,外鍵......)。
您可以使用過濾的異常來捕獲特定的錯誤。 VB.NET:
Try
...
Catch ex as SqlException When ex.Number = ...
...
Catch ex as SqlException When ex.Number = ...
...
End Try
C#(6.0版以上):
try
{
...
}
catch (SqlException ex) when (ex.Number == ...)
{
...
}
catch (SqlException ex) when (ex.Number == ...)
{
...
}
1
這取決於異常和數據庫後端上。您的數據庫將爲約束,權限等特定事項生成唯一的錯誤代碼,但該錯誤代碼因數據庫而異。 Oracle有一個MASSIVE pdf(2000多頁)列出了它可能拋出的每一個可能的錯誤,我相信Sqlserver有類似的東西。我的觀點是你尋找特定的錯誤代碼,然後你需要trp只是在catch部分中的那些,並以不同的方式處理它們,然後你可以得到大量的其他錯誤。
相關問題
- 1. 違反處理唯一約束(SYSTEM.SYS_C006997)
- 2. JDO處理唯一約束違規
- 3. 如何處理JPA唯一約束違規?
- 4. Python中異常處理的特例
- 5. 唯一約束異常(SQLIntegrityConstraintViolationException)
- 6. SEVERE:servlet jsp的Servlet.service()拋出異常java.lang.LinkageError:加載器約束違例
- 7. 如何處理數據遷移腳本中的唯一約束違規?
- 8. HSQLDB - 完整性約束違例:唯一約束或索引違例; BLOCKS_PK表:阻止
- 9. DbUnit + HSQLDB + JPA實體:完整性約束違例:唯一約束或索引違例; UK_25T4P9GXGVRCC8R3VL93JKAJE表:NEW_TAB
- 10. 違反唯一鍵約束
- 11. 違反唯一約束?
- 12. 如何處理無法插入後更新行的唯一約束異常?
- 13. 如何在C#中處理sql異常?
- 14. 如何處理SQLAlchemy的表定義唯一約束
- 15. 如何繞過JPA中的唯一約束異常2
- 16. 如何修改唯一約束,允許一次性的例外
- 17. 數據庫處理唯一約束違規
- 18. 如何處理模型異常例外
- 19. ORA-00001:違反的唯一約束(DEV.X_PK)
- 20. Django的關鍵違反唯一約束
- 21. ORA-00001違反的唯一約束(string.string)
- 22. COM:如何處理特定的異常?
- 23. 如何配置具有異常的唯一約束?
- 24. 由於SQL中的約束違規而異常終止Java
- 25. 如何處理在asp.net中違反主鍵約束?
- 26. 如何從EclipseLink捕獲違反約束的異常?
- 27. 如何定義一個PHP類來處理MySQL的「外鍵約束」異常?
- 28. Django模型唯一約束例外
- 29. 檢查表中是否存在值或處理MySQL唯一約束異常?
- 30. Servlet捕獲唯一約束異常