CNAS取数仪器端升级
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

146 行
4.2KB

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