CNAS取数仪器端升级
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

459 Zeilen
15KB

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