CNAS取数仪器端升级
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

518 lignes
17KB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. using CnasSynchronousCommon;
  7. namespace CnasSynchronusDAL
  8. {
  9. public static class PostgreSQLHelper
  10. {
  11. private static String mConnStr = null;
  12. public static void InitConnectionString(string strServerIP,string strServerPort,string strServerHost,string strServerUser,string strServerPwd)
  13. {
  14. mConnStr = "server=" + strServerIP + ";port=" + strServerPort + ";user=" + strServerUser + ";password=" + strServerPwd + ";database=" + strServerHost + ";CharSet=utf8;Allow User Variables=True";
  15. }
  16. public static void InitConnectionString(string strConnectiong)
  17. {
  18. mConnStr = strConnectiong;
  19. }
  20. /// <summary>
  21. /// 对SQLite数据库执行增删改操作,返回受影响的行数。
  22. /// </summary>
  23. /// <param name="sql">要执行的增删改的SQL语句</param>
  24. /// <returns></returns>
  25. public static int ExecuteNonQuery(String sql)
  26. {
  27. MySqlConnection connection = new MySqlConnection(mConnStr);
  28. try
  29. {
  30. using (connection)
  31. {
  32. connection.Open();
  33. MySqlTransaction transaction = connection.BeginTransaction();
  34. using (MySqlCommand cmd = new MySqlCommand())
  35. {
  36. try
  37. {
  38. PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null);
  39. int rows = cmd.ExecuteNonQuery();
  40. transaction.Commit();
  41. cmd.Parameters.Clear();
  42. return rows;
  43. }
  44. catch (MySqlException e1)
  45. {
  46. try
  47. {
  48. transaction.Rollback();
  49. }
  50. catch (Exception e2)
  51. {
  52. AppLog.Error(e2.Message);
  53. throw e2;
  54. }
  55. AppLog.Error(e1.Message);
  56. throw e1;
  57. }
  58. }
  59. }
  60. }
  61. catch (Exception e)
  62. {
  63. AppLog.Error(e.Message);
  64. throw e;
  65. }
  66. finally
  67. {
  68. if (connection != null)
  69. {
  70. //关闭数据库连接
  71. connection.Close();
  72. }
  73. }
  74. }
  75. /// <summary>
  76. /// 对数据库执行增删改操作,返回受影响的行数。
  77. /// </summary>
  78. /// <param name="sql">要执行的增删改的SQL语句</param>
  79. /// <returns></returns>
  80. public static int ExecuteNonQuery(String sql, MySqlParameter[] cmdParams)
  81. {
  82. try
  83. {
  84. using (MySqlConnection connection = new MySqlConnection(mConnStr))
  85. {
  86. connection.Open();
  87. MySqlTransaction transaction = connection.BeginTransaction();
  88. using (MySqlCommand cmd = new MySqlCommand())
  89. {
  90. try
  91. {
  92. PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams);
  93. int rows = cmd.ExecuteNonQuery();
  94. transaction.Commit();
  95. cmd.Parameters.Clear();
  96. return rows;
  97. }
  98. catch (MySqlException e1)
  99. {
  100. try
  101. {
  102. transaction.Rollback();
  103. }
  104. catch (Exception e2)
  105. {
  106. AppLog.Error(e2.Message);
  107. throw e2;
  108. }
  109. AppLog.Error(e1.Message);
  110. throw e1;
  111. }
  112. }
  113. }
  114. }
  115. catch (Exception e)
  116. {
  117. AppLog.Error(e.Message);
  118. throw e;
  119. }
  120. }
  121. /// <summary>
  122. /// 对SQLite数据库执行操作,返回 返回第一行第一列数据
  123. /// </summary>
  124. /// <param name="sql"></param>
  125. /// <returns></returns>
  126. public static int ExecuteScalar(String sql)
  127. {
  128. try
  129. {
  130. using (MySqlConnection connection = new MySqlConnection(mConnStr))
  131. {
  132. connection.Open();
  133. MySqlTransaction transaction = connection.BeginTransaction();
  134. using (MySqlCommand cmd = new MySqlCommand())
  135. {
  136. try
  137. {
  138. int line = 0;
  139. PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null);
  140. String str = cmd.ExecuteScalar().ToString();
  141. transaction.Commit();
  142. line = Convert.ToInt32(str);
  143. cmd.Parameters.Clear();
  144. return line;
  145. }
  146. catch (MySqlException e1)
  147. {
  148. try
  149. {
  150. transaction.Rollback();
  151. }
  152. catch (Exception e2)
  153. {
  154. AppLog.Error(e2.Message);
  155. throw e2;
  156. }
  157. AppLog.Error(e1.Message);
  158. throw e1;
  159. }
  160. }
  161. }
  162. }
  163. catch (Exception e)
  164. {
  165. AppLog.Error(e.Message);
  166. throw e;
  167. }
  168. }
  169. /// <summary>
  170. /// 对SQLite数据库执行操作,返回 返回第一行第一列数据
  171. /// </summary>
  172. /// <param name="sql"></param>
  173. /// <returns></returns>
  174. public static int ExecuteScalar(String sql, MySqlParameter[] cmdParams)
  175. {
  176. try
  177. {
  178. using (MySqlConnection connection = new MySqlConnection(mConnStr))
  179. {
  180. connection.Open();
  181. MySqlTransaction transaction = connection.BeginTransaction();
  182. using (MySqlCommand cmd = new MySqlCommand())
  183. {
  184. try
  185. {
  186. int line = 0;
  187. PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams);
  188. String str = cmd.ExecuteScalar().ToString();
  189. transaction.Commit();
  190. line = Convert.ToInt32(str);
  191. cmd.Parameters.Clear();
  192. return line;
  193. }
  194. catch (MySqlException e1)
  195. {
  196. try
  197. {
  198. transaction.Rollback();
  199. }
  200. catch (Exception e2)
  201. {
  202. AppLog.Error(e2.Message);
  203. throw e2;
  204. }
  205. AppLog.Error(e1.Message);
  206. throw e1;
  207. }
  208. }
  209. }
  210. }
  211. catch (Exception e)
  212. {
  213. AppLog.Error(e.Message);
  214. throw e;
  215. }
  216. }
  217. /// <summary>
  218. ///  用执行的数据库连接执行一个返回数据集的sql命令
  219. /// </summary>
  220. /// <param name="sql"></param>
  221. /// <returns></returns>
  222. public static MySqlDataReader ExecuteReader(String sql)
  223. {
  224. try
  225. {
  226. //创建一个MySqlConnection对象
  227. using (MySqlConnection connection = new MySqlConnection(mConnStr))
  228. {
  229. connection.Open();
  230. MySqlTransaction transaction = connection.BeginTransaction();
  231. //创建一个MySqlCommand对象
  232. using (MySqlCommand cmd = new MySqlCommand())
  233. {
  234. try
  235. {
  236. PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null);
  237. MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  238. transaction.Commit();
  239. cmd.Parameters.Clear();
  240. return reader;
  241. }
  242. catch (MySqlException e1)
  243. {
  244. try
  245. {
  246. transaction.Rollback();
  247. }
  248. catch (Exception e2)
  249. {
  250. AppLog.Error(e2.Message);
  251. throw e2;
  252. }
  253. AppLog.Error(e1.Message);
  254. throw e1;
  255. }
  256. }
  257. }
  258. }
  259. catch (Exception e)
  260. {
  261. AppLog.Error(e.Message);
  262. throw e;
  263. }
  264. }
  265. /// <summary>
  266. /// 查询返回Dtaset
  267. /// </summary>
  268. /// <param name="sql"></param>
  269. /// <returns></returns>
  270. public static DataSet ExecuteDataSet(String sql)
  271. {
  272. MySqlConnection connection = new MySqlConnection(mConnStr);
  273. try
  274. {
  275. //创建一个MySqlConnection对象
  276. using (connection)
  277. {
  278. connection.Open();
  279. MySqlTransaction transaction = connection.BeginTransaction();
  280. //创建一个MySqlCommand对象
  281. using (MySqlCommand cmd = new MySqlCommand())
  282. {
  283. try
  284. {
  285. AppLog.Error("===-3113-==="+ sql + mConnStr);
  286. PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null);
  287. AppLog.Error("===-3223-==="+ sql + mConnStr);
  288. MySqlDataAdapter adapter = new MySqlDataAdapter();
  289. adapter.SelectCommand = cmd;
  290. DataSet ds = new DataSet();
  291. AppLog.Error("===-3223-==="+ sql + ds);
  292. adapter.Fill(ds);
  293. AppLog.Error("===-3333-==="+ sql + ds);
  294. transaction.Commit();
  295. AppLog.Error("===-3443-==="+ sql + ds);
  296. //清除参数
  297. cmd.Parameters.Clear();
  298. return ds;
  299. AppLog.Error("===-3553-==="+ sql + ds);
  300. }
  301. catch (MySqlException e1)
  302. {
  303. try
  304. {
  305. transaction.Rollback();
  306. }
  307. catch (Exception e2)
  308. {
  309. AppLog.Error(e2.Message);
  310. throw e2;
  311. }
  312. AppLog.Error(e1.Message);
  313. throw e1;
  314. }
  315. }
  316. }
  317. }
  318. catch (Exception e)
  319. {
  320. AppLog.Error(e.Message);
  321. throw e;
  322. }finally
  323. {
  324. if (connection != null)
  325. {
  326. //关闭数据库连接
  327. connection.Close();
  328. }
  329. }
  330. }
  331. /// <summary>
  332. /// 执行sql 返回一个DataTable
  333. /// </summary>
  334. /// <param name="sqlText"></param>
  335. /// <param name="parameters"></param>
  336. /// <returns></returns>
  337. public static DataTable ExecuteDataTable(string sqlText, params MySqlParameter[] parameters)
  338. {
  339. DataTable dt = null;
  340. try
  341. {
  342. using (MySqlDataAdapter adapter = new MySqlDataAdapter(sqlText, mConnStr))
  343. {
  344. dt = new DataTable();
  345. adapter.SelectCommand.Parameters.AddRange(parameters);
  346. adapter.Fill(dt);
  347. return dt;
  348. }
  349. }
  350. catch (Exception ex)
  351. {
  352. AppLog.Error(ex.Message);
  353. }
  354. return null;
  355. }
  356. /// <summary>
  357. /// 查询返回Dtaset
  358. /// </summary>
  359. /// <param name="sql"></param>
  360. /// <returns></returns>
  361. public static DataSet ExecuteDataSet(String sql, MySqlParameter[] cmdParams)
  362. {
  363. MySqlConnection connection = new MySqlConnection(mConnStr);
  364. try
  365. {
  366. //创建一个MySqlConnection对象
  367. using (connection)
  368. {
  369. connection.Open();
  370. MySqlTransaction transaction = connection.BeginTransaction();
  371. //创建一个MySqlCommand对象
  372. using (MySqlCommand cmd = new MySqlCommand())
  373. {
  374. try
  375. {
  376. PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams);
  377. MySqlDataAdapter adapter = new MySqlDataAdapter();
  378. adapter.SelectCommand = cmd;
  379. DataSet ds = new DataSet();
  380. adapter.Fill(ds);
  381. transaction.Commit();
  382. //清除参数
  383. cmd.Parameters.Clear();
  384. return ds;
  385. }
  386. catch (MySqlException e1)
  387. {
  388. try
  389. {
  390. transaction.Rollback();
  391. }
  392. catch (Exception e2)
  393. {
  394. AppLog.Error(e2.Message);
  395. throw e2;
  396. }
  397. AppLog.Error(e1.Message);
  398. throw e1;
  399. }
  400. }
  401. }
  402. }
  403. catch (Exception e)
  404. {
  405. AppLog.Error(e.Message);
  406. throw e;
  407. }finally
  408. {
  409. if (connection != null)
  410. {
  411. //关闭数据库连接
  412. connection.Close();
  413. }
  414. }
  415. }
  416. /// <summary>
  417. /// 准备执行一个命令
  418. /// </summary>
  419. /// <param name="cmd">sql命令</param>
  420. /// <param name="conn">OleDb连接</param>
  421. /// <param name="trans">OleDb事务</param>
  422. /// <param name="cmdType">命令类型例如 存储过程或者文本</param>
  423. /// <param name="cmdText">命令文本,例如:Select * from Products</param>
  424. /// <param name="cmdParms">执行命令的参数</param>
  425. private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)
  426. {
  427. if (conn.State != ConnectionState.Open)
  428. conn.Open();
  429. cmd.Connection = conn;
  430. cmd.CommandText = cmdText;
  431. if (trans != null)
  432. cmd.Transaction = trans;
  433. cmd.CommandType = cmdType;
  434. if (cmdParms != null)
  435. {
  436. foreach (MySqlParameter parm in cmdParms)
  437. cmd.Parameters.Add(parm);
  438. }
  439. }
  440. public static bool TestConnectMySql()
  441. {
  442. bool bIfSuccess = false;
  443. try
  444. {
  445. //创建一个MySqlConnection对象
  446. using (MySqlConnection connection = new MySqlConnection(mConnStr))
  447. {
  448. connection.Open();
  449. if (connection.State == System.Data.ConnectionState.Open)
  450. bIfSuccess = true;
  451. }
  452. }
  453. catch (Exception ex)
  454. {
  455. AppLog.Error(ex.Message);
  456. bIfSuccess = false;
  457. }
  458. return bIfSuccess;
  459. }
  460. }
  461. }