using MySql.Data.MySqlClient; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; namespace NGTools.Tools { public class MySQLHelper { /// ///SQLHelper 的摘要说明 /// //数据库连接字符串(注意:这里的“DBConnectionString”一定要与web.config文件中connectionStrings节点值一致) public static readonly string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"].ToString(); // 用于缓存参数的HASH表 private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable()); /// /// 准备执行一个命令 /// /// sql命令 /// OleDb连接 /// OleDb事务 /// 命令类型例如 存储过程或者文本 /// 命令文本,例如:Select * from Products /// 执行命令的参数 private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null) { foreach (MySqlParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } } } /// /// 给定连接的数据库用假设参数执行一个sql命令(不返回数据集) /// /// 命令类型(存储过程, 文本, 等等) /// 存储过程名称或者sql命令语句 /// 执行命令所用参数的集合 /// 执行命令所影响的行数 /// /// 给定连接的数据库用假设参数执行一个sql命令(不返回数据集) /// /// 命令类型(存储过程, 文本, 等等) /// 存储过程名称或者sql命令语句 /// 执行命令所用参数的集合 /// 执行命令所影响的行数 public static int ExecuteNonQuery(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters) { MySqlCommand cmd = new MySqlCommand(); using (MySqlConnection conn = new MySqlConnection(connectionString)) { try { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } catch (Exception ex) { return 0; } } } /// /// 返回DataSet /// /// 命令类型(存储过程, 文本, 等等) /// 存储过程名称或者sql命令语句 /// 执行命令所用参数的集合 /// public static DataSet ExecuteDataSet(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters) { //创建一个MySqlCommand对象 MySqlCommand cmd = new MySqlCommand(); //创建一个MySqlConnection对象 MySqlConnection conn = new MySqlConnection(connectionString); //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在, try { //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); //调用 MySqlCommand 的 ExecuteReader 方法 MySqlDataAdapter adapter = new MySqlDataAdapter(); adapter.SelectCommand = cmd; DataSet ds = new DataSet(); adapter.Fill(ds); //清除参数 cmd.Parameters.Clear(); conn.Close(); return ds; } catch (Exception e) { throw e; } } /// /// 返回DataTable /// /// 命令类型(存储过程, 文本, 等等) /// 存储过程名称或者sql命令语句 /// 执行命令所用参数的集合 /// public static DataTable ExecuteDataTable(string cmdText, CommandType cmdType = CommandType.Text, params MySqlParameter[] commandParameters) { //创建一个MySqlCommand对象 MySqlCommand cmd = new MySqlCommand(); //创建一个MySqlConnection对象 MySqlConnection conn = new MySqlConnection(connectionString); //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在, try { //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); //调用 MySqlCommand 的 ExecuteReader 方法 MySqlDataAdapter adapter = new MySqlDataAdapter(); adapter.SelectCommand = cmd; DataTable dt = new DataTable(); adapter.Fill(dt); //清除参数 cmd.Parameters.Clear(); conn.Close(); return dt; } catch (Exception e) { return null; } } } }