CNAS取数仪器端升级
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

KingbaseDAL.cs 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using CnasSynchronousCommon;
  7. using CnasSynchrousModel;
  8. using System.Reflection;
  9. using Devart.Common;
  10. using Npgsql;
  11. using Kdbndp;
  12. namespace CnasSynchronusDAL
  13. {
  14. public class KingbaseDAL
  15. {
  16. public void CreateConnectString(string strIP, string strPort, string strName, string strUser, string strPwd)
  17. {
  18. KingbaseHelper.InitConnectionString(strIP, strPort, strName, strUser, strPwd);
  19. }
  20. public void CreateConnectString(string strConnectString)
  21. {
  22. KingbaseHelper.InitConnectionString(strConnectString);
  23. }
  24. //获取所有表单名称
  25. public DataTable GetTableNames(string strName)
  26. {
  27. DataTable dt = new DataTable();
  28. var databaseAndNamespace = KingbaseHelper.GetDatabaseAndNamespace(strName);
  29. //string strSql = string.Format("SELECT table_name as TABNAME FROM information_schema.TABLES WHERE table_schema='{0}'", strName);
  30. string strSql = string.Format("SELECT table_name as TABNAME FROM information_schema.TABLES WHERE table_catalog='{0}' and table_schema='{1}' ", databaseAndNamespace.Item1, databaseAndNamespace.Item2);
  31. try
  32. {
  33. dt = KingbaseHelper.ExecuteDataSet(strSql).Tables[0];
  34. }
  35. catch (Exception ex)
  36. {
  37. AppLog.Error(ex.Message);
  38. }
  39. return dt;
  40. }
  41. /// <summary>
  42. /// 获取某表的表结构
  43. /// </summary>
  44. /// <param name="strTableName"></param>
  45. /// <returns></returns>
  46. public DataTable GetTableStruct(string strTableName, string strViewName, string strViewSql)
  47. {
  48. DataTable dt = new DataTable();
  49. if (strTableName.Length <= 0) return dt;
  50. string strSql = "";
  51. if (strViewName == strTableName && !string.IsNullOrWhiteSpace(strViewName))
  52. strSql = strViewSql + " where 0=1";
  53. else
  54. strSql = string.Format("SELECT * FROM {1}.{0} Where 0=1", strTableName,KingbaseHelper.strNameSpace);
  55. try
  56. {
  57. AppLog.Error("===-222-===" + strTableName + strSql);
  58. dt = KingbaseHelper.ExecuteDataSet(strSql).Tables[0];
  59. AppLog.Error("===-333-===" + strTableName + "KingbaseHelper.ExecuteDataSet(strSql)" + dt);
  60. }
  61. catch (Exception ex)
  62. {
  63. AppLog.Error(ex.Message);
  64. }
  65. return dt;
  66. }
  67. /// <summary>
  68. /// 获取某表的表结构和类型长度
  69. /// </summary>
  70. /// <param name="strTableName"></param>
  71. /// <returns></returns>
  72. public DataTable GetTableTypeAndLenth(string strTableName)
  73. {
  74. DataTable dt = new DataTable();
  75. string strSql = string.Format("select COLUMN_NAME AS 'ColumnName',IS_NULLABLE AS 'IsNullable',DATA_TYPE AS 'DataType',CHARACTER_MAXIMUM_LENGTH AS 'CharMaxLenth',CHARACTER_OCTET_LENGTH AS 'CharOcterLenth',NUMERIC_PRECISION AS 'NumericPrecision',NUMERIC_SCALE AS 'NumericScale' FROM information_schema.COLUMNS WHERE TABLE_NAME LIKE '{0}'", strTableName);
  76. try
  77. {
  78. dt = KingbaseHelper.ExecuteDataSet(strSql).Tables[0];
  79. }
  80. catch (Exception ex)
  81. {
  82. AppLog.Error(ex.Message);
  83. }
  84. return dt;
  85. }
  86. /// <summary>
  87. /// 逐行批量插入数据
  88. /// </summary>
  89. /// <param name="dt"></param>
  90. /// <returns></returns>
  91. public int InsertCnasData(DataTable dt, List<SyncParamasInfo> syncParamasInfos, List<CnasConditionMapValue> lstFixedValue, string strInsumentColumn)
  92. {
  93. int iReturn = 0;
  94. if (dt.Rows.Count <= 0) return 0;
  95. try
  96. {
  97. //获取唯一健组(关键字段)
  98. var query = from p in syncParamasInfos
  99. where p.IfPrimaryKey == true
  100. select new
  101. {
  102. p.TargetField
  103. };
  104. List<string> lstKeyColumns = new List<string>();
  105. foreach (var item in query)
  106. {
  107. lstKeyColumns.Add(item.TargetField);
  108. }
  109. //构建SQL语句
  110. string strSql_part1 = "";
  111. string strSql_part2 = "";
  112. List<string> lstColumnName = new List<string>();
  113. foreach (var item in syncParamasInfos)
  114. {
  115. if (!lstColumnName.Contains(item.TargetField.ToLower()))
  116. {
  117. strSql_part1 += item.TargetField + ",";
  118. strSql_part2 += string.Format("@{0},", item.TargetField.ToLower());
  119. lstColumnName.Add(item.TargetField.ToLower());
  120. }
  121. }
  122. //如果映射列中不包含固定列,则需要将这些列添加到SQL语句中
  123. if (lstFixedValue != null)
  124. {
  125. foreach (var cnasfield in lstFixedValue)
  126. {
  127. if (cnasfield.TableName != syncParamasInfos[0].TargetTable) continue;
  128. if (!lstColumnName.Contains(cnasfield.ColumnName.ToLower()))
  129. {
  130. strSql_part1 += cnasfield.ColumnName + ",";
  131. strSql_part2 += string.Format("@{0},", cnasfield.ColumnName.ToLower());
  132. lstColumnName.Add(cnasfield.ColumnName.ToLower());
  133. }
  134. }
  135. }
  136. //增加仪器编号数据
  137. if (!string.IsNullOrWhiteSpace(strInsumentColumn) && !lstColumnName.Contains(strInsumentColumn.ToLower()))
  138. {
  139. strSql_part1 += strInsumentColumn + ",";
  140. strSql_part2 += string.Format("@{0},", strInsumentColumn);
  141. lstColumnName.Add(strInsumentColumn.ToLower());
  142. }
  143. string strInsertSql = string.Format("insert into {0}({1}) values({2})", syncParamasInfos[0].TargetTable, strSql_part1.Substring(0, strSql_part1.Length - 1), strSql_part2.Substring(0, strSql_part2.Length - 1));
  144. string strUpdateSql = "";
  145. DataTable dtSelect = new DataTable();
  146. foreach (DataRow dr in dt.Rows)
  147. {
  148. //插入参数值
  149. KdbndpParameter[] parameters = new KdbndpParameter[lstColumnName.Count];
  150. int i = 0;
  151. foreach (var item in lstColumnName)
  152. {
  153. parameters[i++] = new KdbndpParameter(item, dr[item]);
  154. }
  155. //插入时发现已经在数据库中存在该值,则进行更新操作
  156. int ifHavaValue = ExistSingleCnasData(lstKeyColumns, syncParamasInfos[0].TargetTable, dr, ref dtSelect);
  157. if (ifHavaValue == 1)
  158. {
  159. if (dtSelect.Rows.Count == 1)
  160. {
  161. //比对获取的数据跟准备更新的数据是否一样
  162. if (!CompareObjectOperation.DataRowCompare(dtSelect.Rows[0], dr, lstColumnName))
  163. {
  164. //构造更新语句
  165. strUpdateSql = GetUpdateSql(lstColumnName, lstKeyColumns, syncParamasInfos[0].TargetTable, dr);
  166. //执行UpdateSql语句
  167. iReturn += KingbaseHelper.ExecuteNonQuery(strUpdateSql, parameters);
  168. }
  169. else
  170. {
  171. iReturn = -2;
  172. AppLog.Info("更新时发现在数据库中相同关键字段数据一致。");
  173. }
  174. }
  175. else
  176. {
  177. AppLog.Error("更新时发现在数据库中多条相同关键字段数据,请重新配置关键字段。");
  178. }
  179. }
  180. else if (ifHavaValue == 0)
  181. {
  182. //执行InsertSQL语句
  183. iReturn += KingbaseHelper.ExecuteNonQuery(strInsertSql, parameters);
  184. }
  185. }
  186. }
  187. catch (Exception ex)
  188. {
  189. if (!LinkCnasTest())
  190. {
  191. iReturn = -1; //用于表示插入时无法正常数据库连接问题
  192. }
  193. //此处添加错误日志
  194. AppLog.Error(ex.Message);
  195. }
  196. return iReturn;
  197. }
  198. /// <summary>
  199. /// 拼接Update语句
  200. /// </summary>
  201. /// <param name="lstColumnName"></param>
  202. /// <param name="lstPrimaryColumn"></param>
  203. /// <param name="dr"></param>
  204. private string GetUpdateSql(List<string> lstColumnName, List<string> lstPrimaryColumn, string strTableName, DataRow dr)
  205. {
  206. //构造关键字段条件
  207. string strsql_partial = "";
  208. foreach (var item in lstPrimaryColumn)
  209. {
  210. if (dr.Table.Columns.Contains(item.ToString()))
  211. if (dr[item.ToString()].ToString() != "")
  212. strsql_partial += $"{item.ToString()}='{dr[item.ToString()].ToString()}' and ";
  213. else
  214. strsql_partial += $"({item.ToString()}='{dr[item.ToString()].ToString()}' or {item.ToString()} is null) and ";
  215. }
  216. //构造Update语句
  217. string strUpdateSql = "";
  218. string strsql_partial2 = "";
  219. foreach (var item in lstColumnName)
  220. {
  221. strsql_partial2 += $"{item}=@{item},";
  222. }
  223. if (strsql_partial.Length > 3 && strsql_partial2.Length > 0)
  224. strUpdateSql = $"update {strTableName} set {strsql_partial2.Substring(0, strsql_partial2.Length - 1)} where {strsql_partial.Substring(0, strsql_partial.Length - 4)}";
  225. return strUpdateSql;
  226. }
  227. internal bool CheckMacMessage(string strMac)
  228. {
  229. bool bIfChecked = false;
  230. string strSql = string.Format("select * FROM macaddress WHERE MAC_ADDRESS='{0}'", strMac);
  231. try
  232. {
  233. DataTable dt = KingbaseHelper.ExecuteDataSet(strSql).Tables[0];
  234. if (dt != null && dt.Rows.Count > 0)
  235. {
  236. bIfChecked = true;
  237. }
  238. }
  239. catch (Exception ex)
  240. {
  241. AppLog.Error(ex.Message);
  242. }
  243. return bIfChecked;
  244. }
  245. /// <summary>
  246. /// 是否数据库中已经存在数据,如果存在返回1,并且传递返回的数据;如果不存在,返回0;如果发生了异常,返回-1
  247. /// </summary>
  248. /// <param name="lstPrimaryColumn"></param>
  249. /// <param name="strTableName"></param>
  250. /// <param name="dr"></param>
  251. /// <param name="dtSelect"></param>
  252. /// <returns></returns>
  253. private int ExistSingleCnasData(List<string> lstPrimaryColumn, string strTableName, DataRow dr, ref DataTable dtSelect)
  254. {
  255. int bIfHaveValue = 0; //如果存在,返回1;如果不存在,返回0;如果发生了异常,返回-1
  256. string strsql_partial = "";
  257. string strSql = "";
  258. foreach (var item in lstPrimaryColumn)
  259. {
  260. if (dr.Table.Columns.Contains(item.ToString()))
  261. if (dr[item.ToString()].ToString() != "")
  262. strsql_partial += $"{item.ToString()}='{dr[item.ToString()].ToString()}' and ";
  263. else
  264. strsql_partial += $"({item.ToString()}='{dr[item.ToString()].ToString()}' or {item.ToString()} is null) and ";
  265. }
  266. if (strsql_partial.Length > 3)
  267. strSql = $"select * from {strTableName} where {strsql_partial.Substring(0, strsql_partial.Length - 4)}";
  268. if (strsql_partial.Length > 3 && (strTableName.Equals("tcoalweight") || strTableName.Equals("TCOALWEIGHT")))
  269. strSql = $"select * from {strTableName} where (idbatch is null or idbatch = '') and {strsql_partial.Substring(0, strsql_partial.Length - 4)}";
  270. if (strSql != "")
  271. {
  272. DataTable dt = KingbaseHelper.ExecuteDataTable(strSql, new KdbndpParameter[] { });
  273. if (dt != null && dt.Rows.Count > 0)
  274. {
  275. bIfHaveValue = 1;
  276. dtSelect = dt;
  277. AppLog.Info($"插入前查询时存在重复数据:{strSql}");
  278. }
  279. else if (dt == null)
  280. {
  281. bIfHaveValue = -1;
  282. AppLog.Info($"插入前查询时发生了异常:{strSql}");
  283. }
  284. }
  285. return bIfHaveValue;
  286. }
  287. internal DataTable GetLoginNameByPwd(string strUserName, string strPwd)
  288. {
  289. DataTable dt = new DataTable();
  290. string strSql = string.Format("select * FROM user WHERE userid='{0}' and password='{1}'", strUserName, strPwd);
  291. try
  292. {
  293. dt = KingbaseHelper.ExecuteDataSet(strSql).Tables[0];
  294. }
  295. catch (Exception ex)
  296. {
  297. AppLog.Error(ex.Message);
  298. }
  299. return dt;
  300. }
  301. public bool LinkCnasTest()
  302. {
  303. return KingbaseHelper.TestConnectKingbase();
  304. }
  305. /// <summary>
  306. /// 获得表中该列中最大时间
  307. /// </summary>
  308. /// <param name="dt"></param>
  309. /// <returns></returns>
  310. public string GetMaxTimeByTableName(string strTableName, string strDateColumn, string strInstrumentColumn, string strInstrumentValue)
  311. {
  312. string strReturnTime = "";
  313. //因为数据库用varchar存储日期字段,从而格式不固定,需要使用多种格式读取
  314. try
  315. {
  316. #region 旧的获取时间方法
  317. ////string strSql_1 = string.Format("SELECT max(STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')) FROM {1} ", strDateColumn, strTableName);
  318. ////string strSql_2 = string.Format("SELECT max(STR_TO_DATE({0},'%Y/%m/%d %H:%i:%s')) FROM {1} ", strDateColumn, strTableName);
  319. //string strSql_2 = string.Format("SELECT max(Convert({0},datetime)) FROM {1} ", strDateColumn, strTableName);
  320. ////string strDateTime_1 = GetMaxTimeByTableName(strSql_1);
  321. //string strDateTime_2= GetMaxTimeByTableName(strSql_2);
  322. ////AppLog.Info($"读取到最大的时间(1):表-{strTableName},列-{strDateColumn},值-{strDateTime_1}");
  323. //AppLog.Info($"读取到最大的时间(2):表-{strTableName},列-{strDateColumn},值-{strDateTime_2}");
  324. //List<DateTime> lstTime = new List<DateTime>();
  325. ////DateTime dateTime_1 = DateTime.Now;
  326. //DateTime dateTime_2 = DateTime.Now;
  327. ////if (DateTime.TryParse(strDateTime_1, out dateTime_1))
  328. ////{
  329. //// lstTime.Add(dateTime_1);
  330. ////}
  331. //if (DateTime.TryParse(strDateTime_2, out dateTime_2))
  332. //{
  333. // if (!lstTime.Contains(dateTime_2))
  334. // lstTime.Add(dateTime_2);
  335. //}
  336. //if (lstTime.Count > 0)
  337. //{
  338. // strReturnTime = lstTime.Max<DateTime>().ToString();
  339. // AppLog.Info($"返回最大的时间(3):表-{strTableName},列-{strDateColumn},值-{strReturnTime}");
  340. //}
  341. # endregion
  342. string strSql = string.Format("SELECT Convert(max(Convert({0},datetime)) using utf8) FROM {1}", strDateColumn, strTableName, strInstrumentColumn, strInstrumentValue);
  343. if (!string.IsNullOrWhiteSpace(strInstrumentColumn) && !string.IsNullOrWhiteSpace(strInstrumentValue))
  344. strSql += string.Format(" where {0}='{1}'", strInstrumentColumn, strInstrumentValue);
  345. string strDateTime = GetMaxTimeByTableName(strSql);
  346. DateTime dateTime = DateTime.Now;
  347. if (DateTime.TryParse(strDateTime, out dateTime))
  348. {
  349. strReturnTime = strDateTime;
  350. }
  351. }
  352. catch (Exception ex)
  353. {
  354. //if (!LinkCnasTest())
  355. //{
  356. // strReturnTime = "1899-1-1"; //用于表示插入时无法正常数据库连接问题
  357. //}
  358. //只要发生异常,就返回这个结果
  359. strReturnTime = "1899-1-1";
  360. AppLog.Error(ex.Message);
  361. }
  362. return strReturnTime;
  363. }
  364. internal DataTable GetDataByDateColumn(string strDBName, string strViewName, string strViewSql, string strTableName, string strDateColumn, string strDate)
  365. {
  366. DataTable dtReturn = new DataTable();
  367. try
  368. {
  369. string strSql = "";
  370. if (strViewName == strTableName && !string.IsNullOrWhiteSpace(strViewName))
  371. strSql = strViewSql + $" where {strDateColumn} >convert( '{strDate}',datetime)";
  372. else
  373. strSql = $"select * from {strDBName}.{strTableName} where \"{strDateColumn}\">TO_TIMESTAMP('{strDate}', 'YYYY-MM-DD HH24:MI:SS');";
  374. DataTable dt = KingbaseHelper.ExecuteDataSet(strSql).Tables[0];
  375. Dictionary<string, string> dictFiled = GetSpecialOperaField(strDBName, strTableName);
  376. if (dictFiled.Count > 0)
  377. dtReturn = DateAndTimeTypeOpera(dt, dictFiled);
  378. else
  379. dtReturn = dt;
  380. }
  381. catch (Exception ex)
  382. {
  383. //发生异常,写入日志
  384. AppLog.Error(ex.Message);
  385. throw ex;
  386. }
  387. return dtReturn;
  388. }
  389. internal Dictionary<string, DataTable> GetAllTableNameAndStructure(string strDBName)
  390. {
  391. Dictionary<string, DataTable> dictTables = new Dictionary<string, DataTable>();
  392. try
  393. {
  394. DataTable TablesName = GetTableNames(strDBName);//得到所有表
  395. foreach (DataRow dr in TablesName.Rows)
  396. {
  397. string strTableName = dr[0].ToString();
  398. AppLog.Error("===---===" + strTableName + "GetTableStruct(strTableName, )");
  399. dictTables.Add(strTableName.ToUpper(), GetTableStruct(strTableName, "", ""));
  400. }
  401. }
  402. catch (Exception ex)
  403. {
  404. //发生异常,写入日志
  405. AppLog.Error(ex.Message);
  406. //throw ex;
  407. }
  408. return dictTables;
  409. }
  410. public string GetMaxTimeByTableName(string strSql)
  411. {
  412. string strDateTime = "";
  413. try
  414. {
  415. DataTable dt = KingbaseHelper.ExecuteDataSet(strSql).Tables[0];
  416. AppLog.Info($"执行语句获得最晚时间:{strSql}");
  417. if (dt != null && dt.Rows.Count == 1)
  418. {
  419. strDateTime = dt.Rows[0][0].ToString();
  420. AppLog.Info($"执行语句获得最晚时间:行数-({dt.Rows.Count}),列数-({dt.Columns.Count}),值-({strDateTime})");
  421. }
  422. }
  423. catch (Exception ex)
  424. {
  425. if (!LinkCnasTest())
  426. {
  427. strDateTime = "1899-1-1"; //用于表示插入时无法正常数据库连接问题
  428. }
  429. AppLog.Error(ex.Message);
  430. }
  431. return strDateTime;
  432. }
  433. /// <summary>
  434. /// 获取所有数据字段,然后记录其中是否存在需要特殊处理的字段
  435. /// </summary>
  436. /// <returns></returns>
  437. private static Dictionary<string, string> GetSpecialOperaField(string strDBName, string strTableName)
  438. {
  439. Dictionary<string, string> DictFiled = new Dictionary<string, string>();
  440. DataTable dt = new DataTable();
  441. try
  442. {
  443. string sql = string.Format("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='{0}' and table_schema='{1}'", strTableName, strDBName); //查询字符串
  444. dt = KingbaseHelper.ExecuteDataSet(sql).Tables[0];
  445. foreach (DataRow dr in dt.Rows)
  446. {
  447. if (dr["data_type"].ToString().ToLower() == "date" || dr["data_type"].ToString().ToLower() == "time")
  448. {
  449. DictFiled.Add(dr["column_name"].ToString(), dr["data_type"].ToString());
  450. }
  451. }
  452. }
  453. catch (Exception ex)
  454. {
  455. //发生异常,写入日志
  456. AppLog.Error(ex.Message);
  457. }
  458. return DictFiled;
  459. }
  460. /// <summary>
  461. /// 获取数据时,单独处理某些(Date和Time)类型数据,并把数据类型转换为字符串类型
  462. /// </summary>
  463. private static DataTable DateAndTimeTypeOpera(DataTable dt, Dictionary<string, string> DictSpecialField)
  464. {
  465. DataTable dtNewFormat = new DataTable();
  466. //添加列
  467. foreach (DataColumn dc in dt.Columns)
  468. {
  469. if (DictSpecialField.ContainsKey(dc.ColumnName))
  470. {
  471. string strDateType = DictSpecialField[dc.ColumnName];
  472. switch (strDateType.ToUpper())
  473. {
  474. case "DATE":
  475. case "TIME":
  476. dtNewFormat.Columns.Add(dc.ColumnName, typeof(string)); //使用字符串来存储该字段,而不是采用它的数据库格式(C#无法区分Date, Time,DateTime,前两种格式会自动补充数据,导致数据的不准确)
  477. break;
  478. default:
  479. dtNewFormat.Columns.Add(dc.ColumnName, dc.DataType);
  480. break;
  481. }
  482. }
  483. else
  484. {
  485. dtNewFormat.Columns.Add(dc.ColumnName, dc.DataType);
  486. }
  487. }
  488. //添加数据行
  489. foreach (DataRow dr in dt.Rows)
  490. {
  491. DataRow drNewRow = dtNewFormat.NewRow();
  492. foreach (DataColumn dc in dtNewFormat.Columns)
  493. {
  494. if (!DictSpecialField.ContainsKey(dc.ColumnName))
  495. drNewRow[dc.ColumnName] = dr[dc.ColumnName];
  496. else
  497. {
  498. switch (DictSpecialField[dc.ColumnName].ToUpper())
  499. {
  500. case "DATE":
  501. if (dr[dc.ColumnName] != null && dr[dc.ColumnName].ToString() != "")
  502. drNewRow[dc.ColumnName] = Convert.ToDateTime(dr[dc.ColumnName]).ToString("yyyy-MM-dd");
  503. break;
  504. case "TIME":
  505. if (dr[dc.ColumnName] != null && dr[dc.ColumnName].ToString() != "")
  506. drNewRow[dc.ColumnName] = Convert.ToDateTime(dr[dc.ColumnName].ToString()).ToString("HH:mm:ss");
  507. break;
  508. default:
  509. drNewRow[dc.ColumnName] = dr[dc.ColumnName];
  510. break;
  511. }
  512. }
  513. }
  514. dtNewFormat.Rows.Add(drNewRow);
  515. }
  516. //返回数据
  517. return dtNewFormat;
  518. }
  519. /// <summary>
  520. /// 获取某个表的数据
  521. /// </summary>
  522. /// <param name="strSql"></param>
  523. /// <returns></returns>
  524. public DataTable GetTableData(string strSql)
  525. {
  526. DataTable dt = new DataTable();
  527. try
  528. {
  529. dt = KingbaseHelper.ExecuteDataSet(strSql).Tables[0];
  530. }
  531. catch (Exception ex)
  532. {
  533. AppLog.Error(ex.Message);
  534. }
  535. return dt;
  536. }
  537. /// <summary>
  538. /// 插入某个表的数据
  539. /// </summary>
  540. /// <param name="strSql"></param>
  541. /// <returns></returns>
  542. public bool InsertTableData(string strSql)
  543. {
  544. try
  545. {
  546. return KingbaseHelper.ExecuteNonQuery(strSql) > 0;
  547. }
  548. catch (Exception ex)
  549. {
  550. AppLog.Error(ex.Message);
  551. }
  552. return false;
  553. }
  554. }
  555. }