IDatabase.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Threading.Tasks;
  5. using TeamAAS.Database.Models;
  6. namespace TeamAAS.Database.Interfaces
  7. {
  8. /// <summary>
  9. /// 数据库操作统一接口。
  10. /// 所有数据库提供者(MySQL、SQLite、SQL Server 等)均需实现此接口。
  11. /// </summary>
  12. public interface IDatabase : IDisposable
  13. {
  14. /// <summary>
  15. /// 数据库唯一标识
  16. /// </summary>
  17. Guid Id { get; }
  18. /// <summary>
  19. /// 数据库名称(显示用)
  20. /// </summary>
  21. string Name { get; set; }
  22. /// <summary>
  23. /// 数据库类型标识(如 "mysql"、"sqlite")
  24. /// </summary>
  25. string ProviderType { get; }
  26. /// <summary>
  27. /// 是否已连接
  28. /// </summary>
  29. bool IsConnected { get; }
  30. /// <summary>
  31. /// 当前连接字符串(敏感信息已脱敏)
  32. /// </summary>
  33. string ConnectionString { get; }
  34. /// <summary>
  35. /// 打开数据库连接
  36. /// </summary>
  37. bool Open();
  38. /// <summary>
  39. /// 异步打开数据库连接
  40. /// </summary>
  41. Task<bool> OpenAsync();
  42. /// <summary>
  43. /// 关闭数据库连接
  44. /// </summary>
  45. void Close();
  46. /// <summary>
  47. /// 异步关闭数据库连接
  48. /// </summary>
  49. Task CloseAsync();
  50. /// <summary>
  51. /// 测试连接是否可用
  52. /// </summary>
  53. (bool Success, string Message) TestConnection();
  54. /// <summary>
  55. /// 异步测试连接
  56. /// </summary>
  57. Task<(bool Success, string Message)> TestConnectionAsync();
  58. /// <summary>
  59. /// 执行非查询 SQL(INSERT/UPDATE/DELETE/CREATE 等)
  60. /// </summary>
  61. /// <param name="sql">SQL 语句</param>
  62. /// <param name="parameters">参数字典(可选)</param>
  63. /// <returns>受影响行数</returns>
  64. int ExecuteNonQuery(string sql, IDictionary<string, object> parameters = null);
  65. /// <summary>
  66. /// 异步执行非查询 SQL
  67. /// </summary>
  68. Task<int> ExecuteNonQueryAsync(string sql, IDictionary<string, object> parameters = null);
  69. /// <summary>
  70. /// 执行查询,返回 DataTable
  71. /// </summary>
  72. /// <param name="sql">SQL 查询语句</param>
  73. /// <param name="parameters">参数字典(可选)</param>
  74. /// <returns>查询结果表</returns>
  75. DataTable ExecuteQuery(string sql, IDictionary<string, object> parameters = null);
  76. /// <summary>
  77. /// 异步执行查询,返回 DataTable
  78. /// </summary>
  79. Task<DataTable> ExecuteQueryAsync(string sql, IDictionary<string, object> parameters = null);
  80. /// <summary>
  81. /// 执行查询,返回首行首列的值
  82. /// </summary>
  83. /// <param name="sql">SQL 查询语句</param>
  84. /// <param name="parameters">参数字典(可选)</param>
  85. /// <returns>首行首列值,无结果时返回 null</returns>
  86. object ExecuteScalar(string sql, IDictionary<string, object> parameters = null);
  87. /// <summary>
  88. /// 异步执行查询,返回首行首列的值
  89. /// </summary>
  90. Task<object> ExecuteScalarAsync(string sql, IDictionary<string, object> parameters = null);
  91. /// <summary>
  92. /// 执行事务内的多条 SQL
  93. /// </summary>
  94. /// <param name="sqlCommands">SQL 语句列表</param>
  95. /// <returns>是否全部执行成功</returns>
  96. bool ExecuteTransaction(IEnumerable<string> sqlCommands);
  97. /// <summary>
  98. /// 异步执行事务
  99. /// </summary>
  100. Task<bool> ExecuteTransactionAsync(IEnumerable<string> sqlCommands);
  101. /// <summary>
  102. /// 获取所有表名
  103. /// </summary>
  104. List<string> GetTableNames();
  105. /// <summary>
  106. /// 异步获取所有表名
  107. /// </summary>
  108. Task<List<string>> GetTableNamesAsync();
  109. /// <summary>
  110. /// 获取指定表的列信息
  111. /// </summary>
  112. /// <param name="tableName">表名</param>
  113. /// <returns>列信息列表</returns>
  114. List<ColumnInfo> GetTableSchema(string tableName);
  115. /// <summary>
  116. /// 异步获取表结构
  117. /// </summary>
  118. Task<List<ColumnInfo>> GetTableSchemaAsync(string tableName);
  119. /// <summary>
  120. /// 初始化连接配置
  121. /// </summary>
  122. /// <param name="config">数据库配置</param>
  123. void Configure(DatabaseConfig config);
  124. }
  125. }