CNAS取数仪器端升级
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

339 rindas
12KB

  1. using CnasSynchronousCommon;
  2. using CnasSynchronusDAL;
  3. using CnasSynchrousModel;
  4. using DBEngine;
  5. using Oracle.ManagedDataAccess.Client;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Data;
  9. using System.Data.OleDb;
  10. using System.Data.SqlClient;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. namespace CNAS_DBSync
  15. {
  16. public class SelectTableType
  17. {
  18. private static string connectionStr = "";
  19. #region 自动模式调取方法
  20. public static DataTable MySqlsec(string strTableName)
  21. {
  22. MySQLDAL mysql = new MySQLDAL();
  23. DataTable tb = mysql.GetTableTypeAndLenth(strTableName);
  24. return tb;
  25. }
  26. public static DataTable Sqlserversec(string strTableName, SyncInstrumentItemInfo t)
  27. {
  28. DataTable dt = new DataTable();
  29. try
  30. {
  31. if (t.SyncInstrumentDSInfo.Host != "")
  32. connectionStr = $"Data Source = {t.SyncInstrumentDSInfo.Host}; Initial Catalog = {t.SyncInstrumentDSInfo.ServerName}; User Id = {t.SyncInstrumentDSInfo.UserId}; Password = {t.SyncInstrumentDSInfo.UserPwd};";
  33. string sql = string.Format(@"SELECT
  34. c.name AS ColumnName,
  35. t.name AS DataType,
  36. c.max_length AS MaxLength,
  37. c.is_nullable AS IsNullable,
  38. c.default_object_id AS DefaultObjectId,
  39. ep.value AS remark
  40. FROM
  41. sys.columns c
  42. JOIN
  43. sys.types t ON c.user_type_id = t.user_type_id
  44. LEFT JOIN
  45. sys.extended_properties ep
  46. ON
  47. c.object_id = ep.major_id
  48. AND c.column_id = ep.minor_id
  49. AND ep.name = 'MS_Description' -- 备注的属性名称
  50. WHERE
  51. c.object_id = OBJECT_ID('{0}'); ", strTableName); //查询字符串
  52. dt = GetDataTable(sql, new SqlParameter[] { });
  53. }
  54. catch (Exception ex)
  55. {
  56. //发生异常,写入日志
  57. AppLog.Error(ex.Message);
  58. }
  59. return dt;
  60. }
  61. /// <summary>
  62. /// 查询操作
  63. /// </summary>
  64. /// <param name="sql"></param>
  65. /// <returns></returns>
  66. public static DataTable GetDataTable(string sql, params SqlParameter[] sp)
  67. {
  68. using (SqlConnection conn = new SqlConnection(connectionStr))
  69. {
  70. conn.Open();
  71. using (SqlDataAdapter sda = new SqlDataAdapter(sql, conn))
  72. {
  73. sda.SelectCommand.Parameters.AddRange(sp);
  74. DataTable dt = new DataTable();
  75. sda.Fill(dt);
  76. return dt;
  77. }
  78. }
  79. }
  80. public static DataTable PostgreSql(string strTableName)
  81. {
  82. DataTable dt = new DataTable();
  83. string strSql = string.Format(@"SELECT
  84. a.attname as ColumnName,
  85. format_type(a.atttypid, a.atttypmod) as DataType,
  86. a.attnotnull as 非空,
  87. col_description(a.attrelid, a.attnum) as remark
  88. FROM
  89. pg_class as c, pg_attribute as a
  90. where
  91. a.attrelid = c.oid
  92. and
  93. a.attnum > 0
  94. and
  95. c.relname = '{0}'; ", strTableName);
  96. try
  97. {
  98. dt = PostgreSQLHelper.ExecuteDataSet(strSql).Tables[0];
  99. }
  100. catch (Exception ex)
  101. {
  102. AppLog.Error(ex.Message);
  103. }
  104. return dt;
  105. }
  106. public static DataTable DmSql(string strTableName)
  107. {
  108. DataTable dt = new DataTable();
  109. string strSql = string.Format(@"SELECT
  110. c.COLUMN_NAME AS ColumnName,
  111. c.DATA_TYPE AS DataType,
  112. c.DATA_LENGTH AS 字段长度,
  113. c.NULLABLE AS 是否允许为空,
  114. com.COMMENTS AS remark
  115. FROM
  116. USER_TAB_COLUMNS c
  117. LEFT JOIN
  118. USER_COL_COMMENTS com
  119. ON
  120. c.TABLE_NAME = com.TABLE_NAME
  121. AND c.COLUMN_NAME = com.COLUMN_NAME
  122. WHERE
  123. c.TABLE_NAME = '{0}';", strTableName);
  124. try
  125. {
  126. dt = DamengHelper.ExecuteDataSet(strSql).Tables[0];
  127. }
  128. catch (Exception ex)
  129. {
  130. AppLog.Error(ex.Message);
  131. }
  132. return dt;
  133. }
  134. public static DataTable OrcSql(string strTableName, SyncInstrumentItemInfo t) {
  135. connectionStr = $"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={t.SyncInstrumentDSInfo.Host})(PORT={t.SyncInstrumentDSInfo.Port}))" + $"(CONNECT_DATA=(SID={t.SyncInstrumentDSInfo.ServerName})));User Id={t.SyncInstrumentDSInfo.UserId};Password={t.SyncInstrumentDSInfo.UserPwd};";
  136. DataTable dt = new DataTable();
  137. string strSql = string.Format("select COLUMN_NAME AS ColumnName,NULLABLE AS IsNullable,DATA_TYPE AS DataType,DATA_LENGTH AS CharMaxLenth,DATA_LENGTH AS CharOcterLenth,DATA_PRECISION AS NumericPrecision,DATA_SCALE AS NumericScale from user_tab_columns where table_name='{0}'", strTableName.ToUpper());
  138. try
  139. {
  140. dt = GetDataTable(strSql, new OracleParameter[] { });
  141. }
  142. catch (Exception ex)
  143. {
  144. AppLog.Error(ex.Message);
  145. }
  146. return dt;
  147. }
  148. /// <summary>
  149. /// 查询操作
  150. /// </summary>
  151. /// <param name="sql"></param>
  152. /// <returns></returns>
  153. public static DataTable GetDataTable(string sql, params OracleParameter[] sp)
  154. {
  155. DataTable dt = new DataTable();
  156. try
  157. {
  158. using (OracleConnection conn = new OracleConnection(connectionStr))
  159. {
  160. conn.Open();
  161. //using (OracleDataAdapter sda = new OracleDataAdapter("select * from t_weight_info where WEIGH_DATE > '2019-10-02 14:20:12'", conn))
  162. using (OracleDataAdapter sda = new OracleDataAdapter(sql, conn))
  163. {
  164. sda.SelectCommand.Parameters.AddRange(sp);
  165. sda.Fill(dt);
  166. }
  167. }
  168. }
  169. catch (Exception ex)
  170. {
  171. AppLog.Error(ex.Message);
  172. }
  173. return dt;
  174. }
  175. public static DataTable KingSql(string strTableName)
  176. {
  177. DataTable dt = new DataTable();
  178. string strSql = string.Format(" \r\n SELECT \r\n a.attname as ColumnName,\r\n \r\n col_description(a.attrelid, a.attnum) as remark,\r\n b.data_type AS DATATYPE \r\n \r\nFROM \r\n pg_class as c,\r\n pg_attribute as a,\r\n information_schema.COLUMNS b\r\n \t\r\nWHERE \r\n c.relname = '{0}' \r\n and a.attrelid = c.oid \r\n AND a.attname=b.column_name\r\n \tAND b. table_name = '{0}'\r\n", strTableName);
  179. try
  180. {
  181. dt = KingbaseHelper.ExecuteDataSet(strSql).Tables[0];
  182. }
  183. catch (Exception ex)
  184. {
  185. AppLog.Error(ex.Message);
  186. }
  187. return dt;
  188. }
  189. public static DataTable AccSql(InstrumentDataSourceInfo fileUrl,string sql)
  190. {
  191. var connectionString = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={fileUrl.Path};Jet OLEDB:Database Password={fileUrl.UserPwd};";
  192. DataTable dataTable = new DataTable();
  193. using (OleDbConnection connection = new OleDbConnection(connectionString))
  194. {
  195. using (OleDbCommand command = new OleDbCommand(sql, connection))
  196. {
  197. try
  198. {
  199. connection.Open();
  200. using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
  201. {
  202. adapter.Fill(dataTable);
  203. }
  204. }
  205. catch (Exception ex)
  206. {
  207. Console.WriteLine($"查询执行错误: {ex.Message}");
  208. }
  209. finally {
  210. connection.Close();
  211. }
  212. }
  213. }
  214. return dataTable;
  215. }
  216. #endregion
  217. #region 手动模式调取方法
  218. public static DataTable MySqlsecSD(string strSql)
  219. {
  220. DataTable dt = new DataTable();
  221. try
  222. {
  223. dt = MySQLHelper.ExecuteDataSet(strSql).Tables[0];
  224. }
  225. catch (Exception ex)
  226. {
  227. AppLog.Error(ex.Message);
  228. }
  229. return dt;
  230. }
  231. public static DataTable SqlserversecSD(string sql, SyncInstrumentItemInfo t)
  232. {
  233. DataTable dt = new DataTable();
  234. try
  235. {
  236. if (t.SyncInstrumentDSInfo.Host != "")
  237. connectionStr = $"Data Source = {t.SyncInstrumentDSInfo.Host}; Initial Catalog = {t.SyncInstrumentDSInfo.ServerName}; User Id = {t.SyncInstrumentDSInfo.UserId}; Password = {t.SyncInstrumentDSInfo.UserPwd};";
  238. dt = GetDataTable(sql, new SqlParameter[] { });
  239. }
  240. catch (Exception ex)
  241. {
  242. //发生异常,写入日志
  243. AppLog.Error(ex.Message);
  244. }
  245. return dt;
  246. }
  247. public static DataTable PostgreSqlSD(string strSql)
  248. {
  249. DataTable dt = new DataTable();
  250. try
  251. {
  252. dt = PostgreSQLHelper.ExecuteDataSet(strSql).Tables[0];
  253. }
  254. catch (Exception ex)
  255. {
  256. AppLog.Error(ex.Message);
  257. }
  258. return dt;
  259. }
  260. public static DataTable DmSqlSD(string strSql)
  261. {
  262. DataTable dt = new DataTable();
  263. try
  264. {
  265. dt = DamengHelper.ExecuteDataSet(strSql).Tables[0];
  266. }
  267. catch (Exception ex)
  268. {
  269. AppLog.Error(ex.Message);
  270. }
  271. return dt;
  272. }
  273. public static DataTable OrcSqlSD(string strSql, SyncInstrumentItemInfo t)
  274. {
  275. connectionStr = $"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={t.SyncInstrumentDSInfo.Host})(PORT={t.SyncInstrumentDSInfo.Port}))" + $"(CONNECT_DATA=(SID={t.SyncInstrumentDSInfo.ServerName})));User Id={t.SyncInstrumentDSInfo.UserId};Password={t.SyncInstrumentDSInfo.UserPwd};";
  276. DataTable dt = new DataTable();
  277. // string strSql = string.Format("select COLUMN_NAME AS ColumnName,NULLABLE AS IsNullable,DATA_TYPE AS DataType,DATA_LENGTH AS CharMaxLenth,DATA_LENGTH AS CharOcterLenth,DATA_PRECISION AS NumericPrecision,DATA_SCALE AS NumericScale from user_tab_columns where table_name='{0}'", strTableName.ToUpper());
  278. try
  279. {
  280. dt = GetDataTable(strSql, new OracleParameter[] { });
  281. }
  282. catch (Exception ex)
  283. {
  284. AppLog.Error(ex.Message);
  285. }
  286. return dt;
  287. }
  288. public static DataTable KingSqlSD(string Sql)
  289. {
  290. DataTable dt = new DataTable();
  291. //string strSql = string.Format(" SELECT a.attname as ColumnName,col_description(a.attrelid, a.attnum) as remark, b.data_type AS DATATYPE FROM pg_class as c, pg_attribute as a, information_schema.COLUMNS b WHERE c.relname = '{0}' and a.attrelid = c.oid AND a.attname=b.column_name AND b. table_name LIKE '{0}'", strTableName);
  292. try
  293. {
  294. dt = KingbaseHelper.ExecuteDataSet(Sql).Tables[0];
  295. }
  296. catch (Exception ex)
  297. {
  298. AppLog.Error(ex.Message);
  299. }
  300. return dt;
  301. }
  302. #endregion
  303. }
  304. }