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.

518 satır
17KB

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