CNAS取数仪器端升级
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

141 linhas
4.0KB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using FreeSql;
  6. using CnasSynchronousCommon;
  7. using System.Data.Entity;
  8. namespace CnasSynchronusDAL
  9. {
  10. public static class KingbaseHelper
  11. {
  12. private static IFreeSql fsql;
  13. public static string strNameSpace = string.Empty;
  14. private static char strBiao = '.';
  15. public static (string, string) GetDatabaseAndNamespace(string strServerHost)
  16. {
  17. if (strServerHost.Contains(strBiao))
  18. {
  19. return (strServerHost.Split(strBiao)[0], strServerHost.Split(strBiao)[1]);
  20. }
  21. return ("", "");
  22. }
  23. public static void InitConnectionString(string strServerIP, string strServerPort, string strServerHost, string strServerUser, string strServerPwd)
  24. {
  25. var databaseAndNamespace = GetDatabaseAndNamespace(strServerHost);
  26. strNameSpace = databaseAndNamespace.Item2;
  27. string connectionString = $"Host={strServerIP};Port={strServerPort};Database={databaseAndNamespace.Item1};Username={strServerUser};Password={strServerPwd};";
  28. InitFreeSql(connectionString);
  29. }
  30. public static void InitConnectionString(string connectionString)
  31. {
  32. InitFreeSql(connectionString);
  33. }
  34. private static void InitFreeSql(string connectionString)
  35. {
  36. fsql = new FreeSqlBuilder()
  37. .UseConnectionString(DataType.KingbaseES, connectionString)
  38. .UseAutoSyncStructure(false) // 不自动同步结构
  39. .Build();
  40. }
  41. /// <summary>
  42. /// 执行SQL语句,返回影响的行数
  43. /// </summary>
  44. public static int ExecuteNonQuery(string sql, object parameters = null)
  45. {
  46. try
  47. {
  48. return fsql.Ado.ExecuteNonQuery(sql, parameters);
  49. }
  50. catch (Exception ex)
  51. {
  52. AppLog.Error(ex.Message);
  53. throw;
  54. }
  55. }
  56. /// <summary>
  57. /// 执行SQL语句,返回第一行第一列的值
  58. /// </summary>
  59. public static T ExecuteScalar<T>(string sql, object parameters = null)
  60. {
  61. try
  62. {
  63. //return fsql.Ado.ExecuteScalar<T>(sql, parameters);
  64. return default(T);
  65. }
  66. catch (Exception ex)
  67. {
  68. AppLog.Error(ex.Message);
  69. throw;
  70. }
  71. }
  72. /// <summary>
  73. /// 执行SQL查询,返回DataTable
  74. /// </summary>
  75. public static DataTable ExecuteDataTable(string sql, object parameters = null)
  76. {
  77. try
  78. {
  79. return fsql.Ado.ExecuteDataTable(sql, parameters);
  80. }
  81. catch (Exception ex)
  82. {
  83. AppLog.Error(ex.Message);
  84. return null;
  85. }
  86. }
  87. /// <summary>
  88. /// 执行SQL查询,返回DataSet
  89. /// </summary>
  90. public static DataSet ExecuteDataSet(string sql, object parameters = null)
  91. {
  92. try
  93. {
  94. return fsql.Ado.ExecuteDataSet(sql, parameters);
  95. }
  96. catch (Exception ex)
  97. {
  98. AppLog.Error(ex.Message);
  99. throw;
  100. }
  101. }
  102. /// <summary>
  103. /// 测试数据库连接
  104. /// </summary>
  105. public static bool TestConnectKingbase()
  106. {
  107. try
  108. {
  109. string connStr = "Host=localhost;Port=54321;Database=test;Username=system;Password=1;";
  110. using (var fsql = new FreeSqlBuilder()
  111. .UseConnectionString(DataType.KingbaseES, connStr)
  112. .Build())
  113. {
  114. return (int)fsql.Ado.ExecuteScalar("SELECT 1") == 1;
  115. }
  116. }
  117. catch (Exception ex)
  118. {
  119. AppLog.Error(ex.Message);
  120. return false;
  121. }
  122. }
  123. }
  124. }