经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C#工具类MySqlHelper,基于MySql.Data.MySqlClient封装
来源:cnblogs  作者:abcd123456789  时间:2019/8/23 8:55:52  对本文有异议

源码:

  1. 1 using System;
  2. 2 using System.Collections.Generic;
  3. 3 using System.Linq;
  4. 4 using System.Text;
  5. 5 using System.Threading.Tasks;
  6. 6 using System.Data;
  7. 7 using MySql.Data.MySqlClient;
  8. 8
  9. 9
  10. 10 namespace Fly.Util.DataBase
  11. 11 {
  12. 12 /// <summary>
  13. 13 /// MySql数据库操作类
  14. 14 /// </summary>
  15. 15 public static class MySqlHelper
  16. 16 {
  17. 17 /// <summary>
  18. 18 /// 执行数据库非查询操作,返回受影响的行数
  19. 19 /// </summary>
  20. 20 /// <param name="connectionString">数据库连接字符串</param>
  21. 21 /// <param name="cmdType">命令的类型</param>
  22. 22 /// <param name="cmdText">MySql存储过程名称或PL/SQL命令</param>
  23. 23 /// <param name="cmdParms">命令参数集合</param>
  24. 24 /// <returns>当前操作影响的数据行数</returns>
  25. 25 public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
  26. 26 {
  27. 27 MySqlCommand cmd = new MySqlCommand();
  28. 28 using (MySqlConnection conn = new MySqlConnection(connectionString))
  29. 29 {
  30. 30 PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  31. 31 int val = cmd.ExecuteNonQuery();
  32. 32 cmd.Parameters.Clear();
  33. 33 return val;
  34. 34 }
  35. 35 }
  36. 36
  37. 37 /// <summary>
  38. 38 /// 执行数据库事务非查询操作,返回受影响的行数
  39. 39 /// </summary>
  40. 40 /// <param name="transaction">数据库事务对象</param>
  41. 41 /// <param name="cmdType">Command类型</param>
  42. 42 /// <param name="cmdText">MySql存储过程名称或PL/SQL命令</param>
  43. 43 /// <param name="cmdParms">命令参数集合</param>
  44. 44 /// <returns>当前事务操作影响的数据行数</returns>
  45. 45 public static int ExecuteNonQuery(MySqlTransaction trans, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
  46. 46 {
  47. 47 MySqlCommand cmd = new MySqlCommand();
  48. 48 PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
  49. 49 int val = cmd.ExecuteNonQuery();
  50. 50 cmd.Parameters.Clear();
  51. 51 return val;
  52. 52 }
  53. 53
  54. 54 /// <summary>
  55. 55 /// 执行数据库非查询操作,返回受影响的行数
  56. 56 /// </summary>
  57. 57 /// <param name="connection">MySql数据库连接对象</param>
  58. 58 /// <param name="cmdType">Command类型</param>
  59. 59 /// <param name="cmdText">MySql存储过程名称或PL/SQL命令</param>
  60. 60 /// <param name="cmdParms">命令参数集合</param>
  61. 61 /// <returns>当前操作影响的数据行数</returns>
  62. 62 public static int ExecuteNonQuery(MySqlConnection connection, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
  63. 63 {
  64. 64 if (connection == null)
  65. 65 throw new ArgumentNullException("当前数据库连接不存在");
  66. 66 MySqlCommand cmd = new MySqlCommand();
  67. 67 PrepareCommand(cmd, connection, null, cmdType, cmdText, cmdParms);
  68. 68 int val = cmd.ExecuteNonQuery();
  69. 69 cmd.Parameters.Clear();
  70. 70 return val;
  71. 71 }
  72. 72
  73. 73 /// <summary>
  74. 74 /// 执行数据库查询操作,返回MySqlDataReader类型的内存结果集
  75. 75 /// </summary>
  76. 76 /// <param name="connectionString">数据库连接字符串</param>
  77. 77 /// <param name="cmdType">命令的类型</param>
  78. 78 /// <param name="cmdText">MySql存储过程名称或PL/SQL命令</param>
  79. 79 /// <param name="cmdParms">命令参数集合</param>
  80. 80 /// <returns>当前查询操作返回的MySqlDataReader类型的内存结果集</returns>
  81. 81 public static MySqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
  82. 82 {
  83. 83 MySqlCommand cmd = new MySqlCommand();
  84. 84 MySqlConnection conn = new MySqlConnection(connectionString);
  85. 85 try
  86. 86 {
  87. 87 PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  88. 88 MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  89. 89 cmd.Parameters.Clear();
  90. 90 return reader;
  91. 91 }
  92. 92 catch
  93. 93 {
  94. 94 cmd.Dispose();
  95. 95 conn.Close();
  96. 96 throw;
  97. 97 }
  98. 98 }
  99. 99
  100. 100 /// <summary>
  101. 101 /// 执行数据库查询操作,返回DataSet类型的结果集
  102. 102 /// </summary>
  103. 103 /// <param name="connectionString">数据库连接字符串</param>
  104. 104 /// <param name="cmdType">命令的类型</param>
  105. 105 /// <param name="cmdText">MySql存储过程名称或PL/SQL命令</param>
  106. 106 /// <param name="cmdParms">命令参数集合</param>
  107. 107 /// <returns>当前查询操作返回的DataSet类型的结果集</returns>
  108. 108 public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
  109. 109 {
  110. 110 MySqlCommand cmd = new MySqlCommand();
  111. 111 MySqlConnection conn = new MySqlConnection(connectionString);
  112. 112 DataSet ds = null;
  113. 113 try
  114. 114 {
  115. 115 PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  116. 116 MySqlDataAdapter adapter = new MySqlDataAdapter();
  117. 117 adapter.SelectCommand = cmd;
  118. 118 ds = new DataSet();
  119. 119 adapter.Fill(ds);
  120. 120 cmd.Parameters.Clear();
  121. 121 }
  122. 122 catch
  123. 123 {
  124. 124 throw;
  125. 125 }
  126. 126 finally
  127. 127 {
  128. 128 cmd.Dispose();
  129. 129 conn.Close();
  130. 130 conn.Dispose();
  131. 131 }
  132. 132
  133. 133 return ds;
  134. 134 }
  135. 135
  136. 136 /// <summary>
  137. 137 /// 执行数据库查询操作,返回DataTable类型的结果集
  138. 138 /// </summary>
  139. 139 /// <param name="connectionString">数据库连接字符串</param>
  140. 140 /// <param name="cmdType">命令的类型</param>
  141. 141 /// <param name="cmdText">MySql存储过程名称或PL/SQL命令</param>
  142. 142 /// <param name="cmdParms">命令参数集合</param>
  143. 143 /// <returns>当前查询操作返回的DataTable类型的结果集</returns>
  144. 144 public static DataTable ExecuteDataTable(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
  145. 145 {
  146. 146 MySqlCommand cmd = new MySqlCommand();
  147. 147 MySqlConnection conn = new MySqlConnection(connectionString);
  148. 148 DataTable dt = null;
  149. 149
  150. 150 try
  151. 151 {
  152. 152 PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  153. 153 MySqlDataAdapter adapter = new MySqlDataAdapter();
  154. 154 adapter.SelectCommand = cmd;
  155. 155 dt = new DataTable();
  156. 156 adapter.Fill(dt);
  157. 157 cmd.Parameters.Clear();
  158. 158 }
  159. 159 catch
  160. 160 {
  161. 161 throw;
  162. 162 }
  163. 163 finally
  164. 164 {
  165. 165 cmd.Dispose();
  166. 166 conn.Close();
  167. 167 conn.Dispose();
  168. 168 }
  169. 169
  170. 170 return dt;
  171. 171 }
  172. 172
  173. 173 /// <summary>
  174. 174 /// 执行数据库查询操作,返回结果集中位于第一行第一列的Object类型的值
  175. 175 /// </summary>
  176. 176 /// <param name="connectionString">数据库连接字符串</param>
  177. 177 /// <param name="cmdType">命令的类型</param>
  178. 178 /// <param name="cmdText">MySql存储过程名称或PL/SQL命令</param>
  179. 179 /// <param name="cmdParms">命令参数集合</param>
  180. 180 /// <returns>当前查询操作返回的结果集中位于第一行第一列的Object类型的值</returns>
  181. 181 public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
  182. 182 {
  183. 183 MySqlCommand cmd = new MySqlCommand();
  184. 184 MySqlConnection conn = new MySqlConnection(connectionString);
  185. 185 object result = null;
  186. 186 try
  187. 187 {
  188. 188 PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  189. 189 result = cmd.ExecuteScalar();
  190. 190 cmd.Parameters.Clear();
  191. 191 }
  192. 192 catch
  193. 193 {
  194. 194 throw;
  195. 195 }
  196. 196 finally
  197. 197 {
  198. 198 cmd.Dispose();
  199. 199 conn.Close();
  200. 200 conn.Dispose();
  201. 201 }
  202. 202
  203. 203 return result;
  204. 204 }
  205. 205
  206. 206 /// <summary>
  207. 207 /// 执行数据库事务查询操作,返回结果集中位于第一行第一列的Object类型的值
  208. 208 /// </summary>
  209. 209 /// <param name="trans">一个已存在的数据库事务对象</param>
  210. 210 /// <param name="commandType">命令类型</param>
  211. 211 /// <param name="commandText">MySql存储过程名称或PL/SQL命令</param>
  212. 212 /// <param name="cmdParms">命令参数集合</param>
  213. 213 /// <returns>当前事务查询操作返回的结果集中位于第一行第一列的Object类型的值</returns>
  214. 214 public static object ExecuteScalar(MySqlTransaction trans, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
  215. 215 {
  216. 216 if (trans == null)
  217. 217 throw new ArgumentNullException("当前数据库事务不存在");
  218. 218 MySqlConnection conn = trans.Connection;
  219. 219 if (conn == null)
  220. 220 throw new ArgumentException("当前事务所在的数据库连接不存在");
  221. 221
  222. 222 MySqlCommand cmd = new MySqlCommand();
  223. 223 object result = null;
  224. 224
  225. 225 try
  226. 226 {
  227. 227 PrepareCommand(cmd, conn, trans, cmdType, cmdText, cmdParms);
  228. 228 result = cmd.ExecuteScalar();
  229. 229 cmd.Parameters.Clear();
  230. 230 }
  231. 231 catch
  232. 232 {
  233. 233 throw;
  234. 234 }
  235. 235 finally
  236. 236 {
  237. 237 trans.Dispose();
  238. 238 cmd.Dispose();
  239. 239 conn.Close();
  240. 240 conn.Dispose();
  241. 241 }
  242. 242
  243. 243 return result;
  244. 244 }
  245. 245
  246. 246 /// <summary>
  247. 247 /// 执行数据库查询操作,返回结果集中位于第一行第一列的Object类型的值
  248. 248 /// </summary>
  249. 249 /// <param name="conn">数据库连接对象</param>
  250. 250 /// <param name="cmdType">Command类型</param>
  251. 251 /// <param name="cmdText">MySql存储过程名称或PL/SQL命令</param>
  252. 252 /// <param name="cmdParms">命令参数集合</param>
  253. 253 /// <returns>当前查询操作返回的结果集中位于第一行第一列的Object类型的值</returns>
  254. 254 public static object ExecuteScalar(MySqlConnection conn, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
  255. 255 {
  256. 256 if (conn == null) throw new ArgumentException("当前数据库连接不存在");
  257. 257 MySqlCommand cmd = new MySqlCommand();
  258. 258 object result = null;
  259. 259
  260. 260 try
  261. 261 {
  262. 262 PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
  263. 263 result = cmd.ExecuteScalar();
  264. 264 cmd.Parameters.Clear();
  265. 265 }
  266. 266 catch
  267. 267 {
  268. 268 throw;
  269. 269 }
  270. 270 finally
  271. 271 {
  272. 272 cmd.Dispose();
  273. 273 conn.Close();
  274. 274 conn.Dispose();
  275. 275 }
  276. 276
  277. 277 return result;
  278. 278 }
  279. 279
  280. 280 /// <summary>
  281. 281 /// 执行存储过程
  282. 282 /// </summary>
  283. 283 /// <param name="connection">MySql数据库连接对象</param>
  284. 284 /// <param name="storedProcName">存储过程名</param>
  285. 285 /// <param name="parameters">存储过程参数</param>
  286. 286 /// <returns>SqlDataReader对象</returns>
  287. 287 public static MySqlDataReader RunStoredProcedure(MySqlConnection connection, string storedProcName, IDataParameter[] parameters)
  288. 288 {
  289. 289 MySqlDataReader returnReader = null;
  290. 290 connection.Open();
  291. 291 MySqlCommand command = BuildSqlCommand(connection, storedProcName, parameters);
  292. 292 returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
  293. 293 return returnReader;
  294. 294 }
  295. 295
  296. 296 /// <summary>
  297. 297 /// 执行数据库命令前的准备工作
  298. 298 /// </summary>
  299. 299 /// <param name="cmd">Command对象</param>
  300. 300 /// <param name="conn">数据库连接对象</param>
  301. 301 /// <param name="trans">事务对象</param>
  302. 302 /// <param name="cmdType">Command类型</param>
  303. 303 /// <param name="cmdText">MySql存储过程名称或PL/SQL命令</param>
  304. 304 /// <param name="cmdParms">命令参数集合</param>
  305. 305 private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)
  306. 306 {
  307. 307 if (conn.State != ConnectionState.Open)
  308. 308 conn.Open();
  309. 309
  310. 310 cmd.Connection = conn;
  311. 311 cmd.CommandText = cmdText;
  312. 312
  313. 313 if (trans != null)
  314. 314 cmd.Transaction = trans;
  315. 315
  316. 316 cmd.CommandType = cmdType;
  317. 317
  318. 318 if (cmdParms != null)
  319. 319 {
  320. 320 foreach (MySqlParameter parm in cmdParms)
  321. 321 cmd.Parameters.Add(parm);
  322. 322 }
  323. 323 }
  324. 324
  325. 325 /// <summary>
  326. 326 /// 构建SqlCommand对象
  327. 327 /// </summary>
  328. 328 /// <param name="connection">数据库连接</param>
  329. 329 /// <param name="storedProcName">存储过程名</param>
  330. 330 /// <param name="parameters">存储过程参数</param>
  331. 331 /// <returns>SqlCommand</returns>
  332. 332 private static MySqlCommand BuildSqlCommand(MySqlConnection connection, string storedProcName, IDataParameter[] parameters)
  333. 333 {
  334. 334 MySqlCommand command = new MySqlCommand(storedProcName, connection);
  335. 335 command.CommandType = CommandType.StoredProcedure;
  336. 336 foreach (MySqlParameter parameter in parameters)
  337. 337 {
  338. 338 command.Parameters.Add(parameter);
  339. 339 }
  340. 340 return command;
  341. 341 }
  342. 342 }
  343. 343 }

 

原文链接:http://www.cnblogs.com/Jun168/p/11395347.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号