AppConfigDbItem.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. using Azylee.Core.AppUtils.AppConfigUtils.AppConfigInterfaces;
  2. using Azylee.Core.DataUtils.StringUtils;
  3. using Azylee.Core.DbUtils;
  4. using Azylee.Core.DbUtils.DbModels;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. namespace Azylee.Core.AppUtils.AppConfigUtils.AppConfigModels
  10. {
  11. /// <summary>
  12. /// 数据库配置信息
  13. /// </summary>
  14. public class AppConfigDbItem : IAppConfigItemModel
  15. {
  16. /// <summary>
  17. /// 序号
  18. /// </summary>
  19. public int Number { get; set; }
  20. /// <summary>
  21. /// 唯一名称
  22. /// </summary>
  23. public string Name { get; set; }
  24. /// <summary>
  25. /// 服务器IP地址
  26. /// </summary>
  27. public string Server { get; set; }
  28. /// <summary>
  29. /// 服务器端口号
  30. /// </summary>
  31. public string Port { get; set; }
  32. /// <summary>
  33. /// 登录用户ID
  34. /// </summary>
  35. public string UserId { get; set; }
  36. /// <summary>
  37. /// 登录用户密码
  38. /// </summary>
  39. public string Password { get; set; }
  40. /// <summary>
  41. /// 数据库类型
  42. /// </summary>
  43. public string Type { get; set; }
  44. /// <summary>
  45. /// 默认数据库
  46. /// </summary>
  47. public string Database { get; set; }
  48. /// <summary>
  49. /// 扩展连接字符串
  50. /// </summary>
  51. public string ExtConnectString { get; set; }
  52. /// <summary>
  53. /// 描述信息
  54. /// </summary>
  55. public string Desc { get; set; }
  56. /// <summary>
  57. /// 全参数构造函数
  58. /// </summary>
  59. /// <param name="number"></param>
  60. /// <param name="type"></param>
  61. /// <param name="name"></param>
  62. /// <param name="server"></param>
  63. /// <param name="port"></param>
  64. /// <param name="userid"></param>
  65. /// <param name="password"></param>
  66. /// <param name="database"></param>
  67. /// <param name="desc"></param>
  68. public AppConfigDbItem(int number, string type, string name, string server, string port, string userid, string password, string database, string desc)
  69. {
  70. Number = number;
  71. Type = type;
  72. Name = name;
  73. Server = server;
  74. Port = port;
  75. UserId = userid;
  76. Password = password;
  77. Database = database;
  78. Desc = desc;
  79. }
  80. public DatabaseType DbType()
  81. {
  82. switch (Type.ToLower())
  83. {
  84. case "pg":
  85. case "postgresql": return DatabaseType.PostgreSQL;
  86. case "mysql":
  87. default:
  88. return DatabaseType.Mysql;
  89. }
  90. }
  91. /// <summary>
  92. /// 连接字符串
  93. /// </summary>
  94. /// <param name="database">执行连接库</param>
  95. /// <returns></returns>
  96. public string ConnectionString(string database = null)
  97. {
  98. if (!Str.Ok(database)) database = Database;
  99. switch (DbType())
  100. {
  101. case DatabaseType.PostgreSQL:
  102. {
  103. return $"Server = {Server}; Port = {(Str.Ok(Port) ? Port : "3306")}; User Id = {UserId}; Password = {Password}; Database = {database}; {ExtConnectString}";
  104. }
  105. case DatabaseType.Mysql:
  106. default:
  107. {
  108. return $"server = {Server}; port = {(Str.Ok(Port) ? Port : "3306")}; userid = {UserId}; password = {Password}; database = {database}; persistsecurityinfo = True; {ExtConnectString}";
  109. }
  110. }
  111. }
  112. /// <summary>
  113. /// 表空间查询连接字符串
  114. /// </summary>
  115. /// <returns></returns>
  116. public string SchemaConnectionString()
  117. {
  118. switch (DbType())
  119. {
  120. case DatabaseType.PostgreSQL:
  121. {
  122. return ConnectionString("");
  123. }
  124. case DatabaseType.Mysql:
  125. default:
  126. {
  127. return ConnectionString("information_schema"); ;
  128. }
  129. }
  130. }
  131. /// <summary>
  132. /// 测试连接查询语句
  133. /// </summary>
  134. /// <returns></returns>
  135. public string ValidationQuery()
  136. {
  137. switch (DbType())
  138. {
  139. case DatabaseType.PostgreSQL:
  140. case DatabaseType.Mysql:
  141. default:
  142. {
  143. return "select now()";
  144. }
  145. }
  146. }
  147. /// <summary>
  148. /// 表空间查询语句
  149. /// </summary>
  150. /// <returns></returns>
  151. public string SchemaQuery()
  152. {
  153. switch (DbType())
  154. {
  155. case DatabaseType.PostgreSQL:
  156. return "SELECT datname AS schema_name FROM pg_database";
  157. case DatabaseType.Mysql:
  158. default:
  159. return "SELECT schema_name FROM `SCHEMATA`";
  160. }
  161. }
  162. /// <summary>
  163. /// 排序序号
  164. /// </summary>
  165. /// <returns></returns>
  166. public int GetOrderNumber()
  167. {
  168. return this.Number;
  169. }
  170. /// <summary>
  171. /// 唯一名称
  172. /// </summary>
  173. /// <returns></returns>
  174. public string GetUniqueName()
  175. {
  176. return this.Name;
  177. }
  178. }
  179. }