DataAccessHelper
private void Open() { // 打开数据库连接 if (conn_Mysql == null) { conn_Mysql = new MySqlConnection(ConfigurationManager.AppSettings["ConnectionString"]); } if (conn_Mysql.State == System.Data.ConnectionState.Closed) conn_Mysql.Open(); }
/// <summary>
/// 创建一个SqlCommand对象以此来执行存储过程
/// </summary>
/// <param name="procName">存储过程的名称</param>
/// <param name="prams">存储过程所需参数</param>
/// <returns>返回SqlCommand对象</returns>
private MySqlCommand CreateCommand(string procName, MySqlParameter[] prams) { // 确认打开连接 Open(); MySqlCommand cmd = new MySqlCommand(procName, conn_Mysql); //SqlCommand cmd = new SqlCommand(procName, conn); cmd.CommandType = CommandType.StoredProcedure; // 依次把参数传入存储过程 if (prams != null) { foreach (MySqlParameter parameter in prams) cmd.Parameters.Add(parameter); } // 加入返回参数 cmd.Parameters.Add( new MySqlParameter("ReturnValue", MySqlDbType.Int32, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); return cmd; }
执行带参数的存储过程
/// <summary> /// 执行存储过程 /// </summary> /// <param name="procName">带参数的存储过程的名称</param> /// <param name="prams">存储过程所需参数</param> /// <param name="dataReader">通过输出参数返回DataTable对象</param> public void RunProc(string procName, MySqlParameter[] prams, out DataTable dt, out MySqlCommand cmd) { cmd = CreateCommand(procName, prams); MySqlDataReader dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); dt = ConvertDataReaderToDataTable_MySQL(dataReader); }
DAL层
/// <summary> /// 获取数据 /// </summary> /// <returns>DataTable</returns> public DataTable Getxxxx(EmsUserEntity emsUserEntity, ElecBalanceEntity elecBalanceEntity) { DataTable dt = new DataTable(); //SqlCommand cmd = new SqlCommand(); MySqlCommand cmd = new MySqlCommand(); DataAccessHelper data = new DataAccessHelper(); //传人传出参数 //SqlParameter[] prams = { // data.MakeInParam("@account",SqlDbType.VarChar, 50, emsUserEntity.accountname) // }; MySqlParameter[] prams ={ data.MakeInParam_MySql("@account",MySqlDbType.VarChar, 50, emsUserEntity.accountname) }; try { //调用存储过程 data.RunProc("xxx(存储过程名)", prams, out dt); data.Close(); } catch (Exception ex) { Logger.Error("EEEEEEEEEE====================获取实时数据出错,信息:" + ex); dt = null; } return dt; }