三层架构调用存储过程

 
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;
        }
原文地址:https://www.cnblogs.com/Pinapple/p/7873204.html