You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.2 KiB

3 years ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace Apewer.Source
  5. {
  6. /// <summary>表示在执行 SQL 语句执行过程中发生的错误。</summary>
  7. [Serializable]
  8. public sealed class SqlException : Exception
  9. {
  10. const string EmptyMessage = "(无消息)";
  11. string _msg = null;
  12. string _sql = null;
  13. /// <summary>获取描述当前异常的消息。</summary>
  14. public override string Message { get => _msg; }
  15. /// <summary>获取引发异常的 SQL 语句。</summary>
  16. public string Statement { get => _sql; }
  17. /// <summary>初始化 <see cref="SqlException"/> 类的新实例。</summary>
  18. /// <param name="message">描述当前异常的消息。</param>
  19. /// <param name="statement">附带 SQL 语句。</param>
  20. public SqlException(string message, string statement = null)
  21. {
  22. _msg = string.IsNullOrEmpty(message) ? EmptyMessage : message;
  23. _sql = statement;
  24. }
  25. /// <summary>初始化 <see cref="SqlException"/> 类的新实例。</summary>
  26. /// <param name="query">用于获取消息的查询结果。</param>
  27. /// <param name="statement">附带 SQL 语句。</param>
  28. public SqlException(IQuery query, string statement = null)
  29. {
  30. if (query == null)
  31. {
  32. _msg = "查询结果实例无效。";
  33. _sql = statement;
  34. return;
  35. }
  36. _msg = query.Message;
  37. if (string.IsNullOrEmpty(_msg)) _msg = EmptyMessage;
  38. _sql = statement;
  39. }
  40. /// <summary>初始化 <see cref="SqlException"/> 类的新实例。</summary>
  41. /// <param name="execute">用于获取消息的执行结果。</param>
  42. /// <param name="statement">附带 SQL 语句。</param>
  43. public SqlException(IExecute execute, string statement = null)
  44. {
  45. if (execute == null)
  46. {
  47. _msg = "执行结果实例无效。";
  48. return;
  49. }
  50. _msg = execute.Message;
  51. if (string.IsNullOrEmpty(_msg)) _msg = EmptyMessage;
  52. _sql = statement;
  53. }
  54. }
  55. }