MySqlTools.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. using MySql.Data.MySqlClient;
  2. using System.Data;
  3. namespace X2D1TaskServer
  4. {
  5. public static class MySqlTools
  6. {
  7. /// <summary>
  8. /// 用现有的数据库连接执行一个sql命令(不返回数据集)
  9. /// </summary>
  10. /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  11. /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  12. /// <param name="commandParameters">执行命令所用参数的集合</param>
  13. /// <returns>执行命令所影响的行数</returns>
  14. public static int ExecuteNonQuery(CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  15. {
  16. string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MySql"].ConnectionString;
  17. using (MySqlConnection conn = new MySqlConnection(connectionString))
  18. {
  19. MySqlCommand cmd = new MySqlCommand();
  20. PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
  21. int val = cmd.ExecuteNonQuery();
  22. cmd.Parameters.Clear();
  23. return val;
  24. }
  25. }
  26. /// <summary>
  27. /// 用执行的数据库连接执行一个返回数据集的sql命令
  28. /// </summary>
  29. /// <remarks>
  30. /// 举例:
  31. /// MySqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
  32. /// </remarks>
  33. /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  34. /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  35. /// <param name="commandParameters">执行命令所用参数的集合</param>
  36. /// <returns>包含结果的读取器</returns>
  37. public static MySqlDataReader ExecuteReader(CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  38. {
  39. string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MySql"].ConnectionString;
  40. using (MySqlConnection conn = new MySqlConnection(connectionString))
  41. {
  42. MySqlCommand cmd = new MySqlCommand();
  43. PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
  44. MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  45. cmd.Parameters.Clear();
  46. return reader;
  47. }
  48. }
  49. /// <summary>
  50. /// 返回DataSet
  51. /// </summary>
  52. /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  53. /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  54. /// <param name="commandParameters">执行命令所用参数的集合</param>
  55. /// <returns></returns>
  56. public static DataSet GetDataSet(CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  57. {
  58. MySqlCommand cmd = new MySqlCommand();
  59. string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MySql"].ConnectionString;
  60. using (MySqlConnection conn = new MySqlConnection(connectionString))
  61. {
  62. PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
  63. MySqlDataAdapter adapter = new MySqlDataAdapter();
  64. adapter.SelectCommand = cmd;
  65. DataSet ds = new DataSet();
  66. adapter.Fill(ds);
  67. cmd.Parameters.Clear();
  68. conn.Close();
  69. return ds;
  70. }
  71. }
  72. /// <summary>
  73. /// 用指定的数据库连接字符串执行一个命令并返回一个数据表
  74. /// </summary>
  75. /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  76. /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  77. /// <param name="commandParameters">执行命令所用参数的集合</param>
  78. public static DataTable GetDataTable(CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  79. {
  80. MySqlCommand cmd = new MySqlCommand();
  81. string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MySql"].ConnectionString;
  82. using (MySqlConnection conn = new MySqlConnection(connectionString))
  83. {
  84. PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
  85. MySqlDataAdapter adapter = new MySqlDataAdapter();
  86. adapter.SelectCommand = cmd;
  87. DataTable ds = new DataTable();
  88. adapter.Fill(ds);
  89. cmd.Parameters.Clear();
  90. conn.Close();
  91. return ds;
  92. }
  93. }
  94. /// <summary>
  95. /// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列
  96. /// </summary>
  97. /// <remarks>
  98. ///例如:
  99. /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
  100. /// </remarks>
  101. /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
  102. /// <param name="cmdText">存储过程名称或者sql命令语句</param>
  103. /// <param name="commandParameters">执行命令所用参数的集合</param>
  104. /// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
  105. public static object ExecuteScalar(CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  106. {
  107. MySqlCommand cmd = new MySqlCommand();
  108. string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MySql"].ConnectionString;
  109. using (MySqlConnection conn = new MySqlConnection(connectionString))
  110. {
  111. PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
  112. object val = cmd.ExecuteScalar();
  113. cmd.Parameters.Clear();
  114. return val;
  115. }
  116. }
  117. /// <summary>
  118. /// 返回插入值ID
  119. /// </summary>
  120. /// <param name="cmdType"></param>
  121. /// <param name="cmdText"></param>
  122. /// <param name="commandParameters"></param>
  123. /// <returns></returns>
  124. public static object ExecuteNonExist(CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
  125. {
  126. MySqlCommand cmd = new MySqlCommand();
  127. string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MySql"].ConnectionString;
  128. using (MySqlConnection connection = new MySqlConnection(connectionString))
  129. {
  130. PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
  131. object val = cmd.ExecuteNonQuery();
  132. return cmd.LastInsertedId;
  133. }
  134. }
  135. /// <summary>
  136. /// 准备执行一个命令
  137. /// </summary>
  138. /// <param name="cmd">sql命令</param>
  139. /// <param name="conn">OleDb连接</param>
  140. /// <param name="trans">OleDb事务</param>
  141. /// <param name="cmdType">命令类型例如 存储过程或者文本</param>
  142. /// <param name="cmdText">命令文本,例如:Select * from Products</param>
  143. /// <param name="cmdParms">执行命令的参数</param>
  144. private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)
  145. {
  146. if (conn.State != ConnectionState.Open)
  147. conn.Open();
  148. cmd.Connection = conn;
  149. cmd.CommandText = cmdText;
  150. if (trans != null)
  151. cmd.Transaction = trans;
  152. cmd.CommandType = cmdType;
  153. if (cmdParms != null)
  154. {
  155. foreach (MySqlParameter parm in cmdParms)
  156. cmd.Parameters.Add(parm);
  157. }
  158. }
  159. }
  160. }