CNAS取数仪器端升级
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

147 satır
4.3KB

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