using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HxDbContext { /// /// MySql帮助类 /// public class MySqlHelper { private static string connstr = GetConnStr(); #region 获取字数据库字符串 /// /// 获取字数据库字符串 /// /// private static string GetConnStr() { //string _db = ""; //string _uid = ""; //string _pwd = ""; //string _database = ""; //try //{ // StreamReader sr = new StreamReader(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "\\Config\\MySQLConfig.ini", Encoding.GetEncoding("gb2312")); // _db = sr.ReadLine(); // _uid = sr.ReadLine(); // _pwd = sr.ReadLine(); // _database = sr.ReadLine(); // sr.Close(); //} //catch (Exception ex) //{ // throw new Exception(ex.ToString()); //} ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["MySqlDbContext"]; return cs.ConnectionString; } #endregion #region 执行查询语句,返回MySqlDataReader /// /// 执行查询语句,返回MySqlDataReader /// /// /// public static MySqlDataReader ExecuteReader(string sqlString) { MySqlConnection connection = new MySqlConnection(connstr); MySqlCommand cmd = new MySqlCommand(sqlString, connection); MySqlDataReader myReader = null; try { connection.Open(); myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); return myReader; } catch (System.Data.SqlClient.SqlException e) { connection.Close(); throw new Exception(e.Message); } finally { if (myReader == null) { cmd.Dispose(); connection.Close(); } } } #endregion #region 执行带参数的查询语句,返回MySqlDataReader /// /// 执行带参数的查询语句,返回MySqlDataReader /// /// /// /// public static MySqlDataReader ExecuteReader(string sqlString, params MySqlParameter[] cmdParms) { MySqlConnection connection = new MySqlConnection(connstr); MySqlCommand cmd = new MySqlCommand(); MySqlDataReader myReader = null; try { PrepareCommand(cmd, connection, null, sqlString, cmdParms); myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return myReader; } catch (System.Data.SqlClient.SqlException e) { connection.Close(); throw new Exception(e.Message); } finally { if (myReader == null) { cmd.Dispose(); connection.Close(); } } } #endregion #region 执行sql语句,返回执行行数 /// /// 执行sql语句,返回执行行数 /// /// /// public static int UpdataSql(string sql) { using (MySqlConnection conn = new MySqlConnection(connstr)) { using (MySqlCommand cmd = new MySqlCommand(sql, conn)) { try { conn.Open(); int rows = cmd.ExecuteNonQuery(); return rows; } catch (MySql.Data.MySqlClient.MySqlException e) { conn.Close(); throw e; } finally { cmd.Dispose(); conn.Close(); } } } } #endregion #region 执行带参数的sql语句,并返回执行行数 /// /// 执行带参数的sql语句,并返回执行行数 /// /// /// /// public static int ExecuteSql(string sqlString, params MySqlParameter[] cmdParms) { using (MySqlConnection connection = new MySqlConnection(connstr)) { using (MySqlCommand cmd = new MySqlCommand()) { try { PrepareCommand(cmd, connection, null, sqlString, cmdParms); int rows = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return rows; } catch (System.Data.SqlClient.SqlException E) { throw new Exception(E.Message); } finally { cmd.Dispose(); connection.Close(); } } } } #endregion #region 执行查询语句,返回GetDataTable /// /// 执行查询语句,返回GetDataTable /// /// /// public static DataTable GetDataTable(string sql) { using (MySqlConnection conn = new MySqlConnection(connstr)) { DataSet ds = new DataSet(); try { conn.Open(); MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn); DataAdapter.Fill(ds); if (ds != null) { return ds.Tables[0]; } return null; } catch (Exception ex) { throw ex; } finally { conn.Close(); } } } #endregion #region 执行带参数的查询语句,返回DataSet /// /// 执行带参数的查询语句,返回DataSet /// /// /// /// public static DataSet GetDataSet(string sqlString, params MySqlParameter[] cmdParms) { using (MySqlConnection connection = new MySqlConnection(connstr)) { MySqlCommand cmd = new MySqlCommand(); PrepareCommand(cmd, connection, null, sqlString, cmdParms); using (MySqlDataAdapter da = new MySqlDataAdapter(cmd)) { DataSet ds = new DataSet(); try { da.Fill(ds, "ds"); cmd.Parameters.Clear(); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } finally { cmd.Dispose(); connection.Close(); } return ds; } } } #endregion #region 执行带参数的sql语句,并返回object /// /// 执行带参数的sql语句,并返回object /// /// /// /// public static object GetSingle(string sqlString, params MySqlParameter[] cmdParms) { using (MySqlConnection connection = new MySqlConnection(connstr)) { using (MySqlCommand cmd = new MySqlCommand()) { try { PrepareCommand(cmd, connection, null, sqlString, cmdParms); object obj = cmd.ExecuteScalar(); cmd.Parameters.Clear(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { return null; } else { return obj; } } catch (System.Data.SqlClient.SqlException e) { throw new Exception(e.Message); } finally { cmd.Dispose(); connection.Close(); } } } } #endregion #region 执行存储过程,返回数据集 /// /// 执行存储过程,返回数据集 /// /// 存储过程名 /// 存储过程参数 /// DataSet public static DataSet RunProcedureForDataSet(string storedProcName, IDataParameter[] parameters) { using (MySqlConnection connection = new MySqlConnection(connstr)) { DataSet dataSet = new DataSet(); connection.Open(); MySqlDataAdapter sqlDA = new MySqlDataAdapter(); sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters); sqlDA.Fill(dataSet); connection.Close(); return dataSet; } } #endregion #region 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值) /// /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值) /// /// 数据库连接 /// 存储过程名 /// 存储过程参数 /// SqlCommand private static MySqlCommand BuildQueryCommand(MySqlConnection connection, string storedProcName, IDataParameter[] parameters) { MySqlCommand command = new MySqlCommand(storedProcName, connection); command.CommandType = CommandType.StoredProcedure; foreach (MySqlParameter parameter in parameters) { command.Parameters.Add(parameter); } return command; } #endregion #region 装载MySqlCommand对象 /// /// 装载MySqlCommand对象 /// private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, 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 = CommandType.Text; //cmdType; if (cmdParms != null) { foreach (MySqlParameter parm in cmdParms) { cmd.Parameters.Add(parm); } } } #endregion } }