![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class MySqlHelper 2 { 3 4 //数据库连接字符串 5 public static string Conn = "Database='数据库名';Data Source='服务器IP地址';User Id='用户名';Password='密码';charset='utf8';pooling=true"; 6 // 用于缓存参数的HASH表 7 private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable()); 8 9 /// <summary> 10 /// 给定连接的数据库用假设参数执行一个sql命令(不返回数据集) 11 /// </summary> 12 /// <param name="connectionString">一个有效的连接字符串</param> 13 /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param> 14 /// <param name="cmdText">存储过程名称或者sql命令语句</param> 15 /// <param name="commandParameters">执行命令所用参数的集合</param> 16 /// <returns>执行命令所影响的行数</returns> 17 public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters) 18 { 19 20 MySqlCommand cmd = new MySqlCommand(); 21 using (MySqlConnection conn = new MySqlConnection(connectionString)) 22 { 23 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); 24 int val = cmd.ExecuteNonQuery(); 25 cmd.Parameters.Clear(); 26 return val; 27 } 28 } 29 30 31 /// <summary> 32 /// 用执行的数据库连接执行一个返回数据集的sql命令 33 /// </summary> 34 /// <remarks> 35 /// 举例: 36 /// MySqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24)); 37 /// </remarks> 38 /// <param name="connectionString">一个有效的连接字符串</param> 39 /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param> 40 /// <param name="cmdText">存储过程名称或者sql命令语句</param> 41 /// <param name="commandParameters">执行命令所用参数的集合</param> 42 /// <returns>包含结果的读取器</returns> 43 public static MySqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters) 44 { 45 //创建一个MySqlCommand对象 46 MySqlCommand cmd = new MySqlCommand(); 47 //创建一个MySqlConnection对象 48 MySqlConnection conn = new MySqlConnection(connectionString); 49 50 //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在, 51 //因此commandBehaviour.CloseConnection 就不会执行 52 try 53 { 54 //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数 55 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); 56 //调用 MySqlCommand 的 ExecuteReader 方法 57 MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 58 //清除参数 59 cmd.Parameters.Clear(); 60 return reader; 61 } 62 catch 63 { 64 //关闭连接,抛出异常 65 conn.Close(); 66 throw; 67 } 68 } 69 70 /// <summary> 71 /// 返回DataSet 72 /// </summary> 73 /// <param name="connectionString">一个有效的连接字符串</param> 74 /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param> 75 /// <param name="cmdText">存储过程名称或者sql命令语句</param> 76 /// <param name="commandParameters">执行命令所用参数的集合</param> 77 /// <returns></returns> 78 public static DataSet GetDataSet(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters) 79 { 80 //创建一个MySqlCommand对象 81 MySqlCommand cmd = new MySqlCommand(); 82 //创建一个MySqlConnection对象 83 MySqlConnection conn = new MySqlConnection(connectionString); 84 85 //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在, 86 87 try 88 { 89 //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数 90 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); 91 //调用 MySqlCommand 的 ExecuteReader 方法 92 MySqlDataAdapter adapter = new MySqlDataAdapter(); 93 adapter.SelectCommand = cmd; 94 DataSet ds = new DataSet(); 95 96 adapter.Fill(ds); 97 //清除参数 98 cmd.Parameters.Clear(); 99 conn.Close(); 100 return ds; 101 } 102 catch (Exception e) 103 { 104 throw e; 105 } 106 }