/// <summary>
        /// 获取Sql语句执行参数
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        private string[] GetSqlParams(Neusoft.FrameWork.Models.NeuCache info)
        {
            string[] strParams = new string[] { info.ID,
                                                info.Name,
                                                info.Table,
                                                info.DataVersion.ToString(),
                                                info.DLL,
                                                info.Class,
                                                info.Fun,
                                                Neusoft.FrameWork.Function.NConvert.ToInt32(info.Valid).ToString() };

            return(strParams);
        }
        /// <summary>
        /// 获取缓存数据
        /// </summary>
        /// <param name="cacheKey">数据索引</param>
        /// <param name="dataVersion">数据版本号</param>
        /// <returns>成功返回数据 失败返回null</returns>
        internal ArrayList LoadCacheData(Neusoft.FrameWork.Models.CacheDataType cacheKey, object[] funParam, out string dataVersion)
        {
            dataVersion = "";

            Neusoft.FrameWork.Models.NeuCache configInfo = this.GetCacheConfig(cacheKey);
            if (configInfo == null)
            {
                return(null);
            }

            dataVersion = configInfo.DataVersion.ToString();

            return(this.LoadCacheData(configInfo, funParam));
        }
        /// <summary>
        /// 更新缓存配置信息
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public int UpdateNeuCache(Neusoft.FrameWork.Models.NeuCache info)
        {
            string sql = "";

            if (this.Sql.GetSql("DataCaching.UpdateNeuCache", ref sql) == -1)
            {
                return(-1);
            }

            string[] strParams = this.GetSqlParams(info);
            sql = string.Format(sql, strParams);

            return(this.ExecNoQuery(sql));
        }
        /// <summary>
        /// 取列表,可能是一条或者多条
        /// 私有方法,在其他方法中调用
        /// </summary>
        /// <param name="SQLString">SQL语句</param>
        /// <returns>对象数组</returns>
        private List <Neusoft.FrameWork.Models.NeuCache> ExecSqlForCacheInfo(string SQLString)
        {
            List <Neusoft.FrameWork.Models.NeuCache> al = new List <Neusoft.FrameWork.Models.NeuCache>();

            Neusoft.FrameWork.Models.NeuCache info;

            //执行查询语句
            if (this.ExecQuery(SQLString) == -1)
            {
                this.Err     = "获得数据缓存配置信息时,执行SQL语句出错!" + this.Err;
                this.ErrCode = "-1";
                return(null);
            }
            try
            {
                while (this.Reader.Read())
                {
                    //取查询结果中的记录
                    info = new Neusoft.FrameWork.Models.NeuCache();

                    info.ID          = this.Reader[0].ToString();       //CacheKey
                    info.Name        = this.Reader[1].ToString();       //Description
                    info.Table       = this.Reader[2].ToString();
                    info.DataVersion = Neusoft.FrameWork.Function.NConvert.ToDecimal(this.Reader[3].ToString());
                    info.DLL         = this.Reader[4].ToString();
                    info.Class       = this.Reader[5].ToString();
                    info.Fun         = this.Reader[6].ToString();
                    info.Valid       = Neusoft.FrameWork.Function.NConvert.ToBoolean(this.Reader[7]);

                    al.Add(info);
                }
            }//抛出错误
            catch (Exception ex)
            {
                this.Err     = "获取数据缓存配置信息时出错!" + ex.Message;
                this.ErrCode = "-1";
                return(null);
            }
            finally
            {
                this.Reader.Close();
            }

            return(al);
        }
        /// <summary>
        /// 根据缓存索引获取缓存配置信息
        ///
        /// ErrCode=NoDataFound       未维护数据
        /// ErrCode=NoManagmentFound  未维护数据提取信息
        /// ErrCode=PauseCache        暂停了缓存处理
        /// </summary>
        /// <param name="cacheKey">数据索引</param>
        /// <returns>成功返回数据配置信息 失败返回null</returns>
        internal Neusoft.FrameWork.Models.NeuCache GetCacheConfig(Neusoft.FrameWork.Models.CacheDataType cacheKey)
        {
            string sql = "";

            if (this.Sql.GetSql("DataCaching.GetCacheCofig.Simple", ref sql) == -1)
            {
                this.Err = this.Sql.Err;
                return(null);
            }

            sql = string.Format(sql, cacheKey.ToString());

            if (this.ExecQuery(sql) == -1)
            {
                this.Err = "执行Sql语句失败:  " + this.Err;
                return(null);
            }

            Neusoft.FrameWork.Models.NeuCache configInfo = new Neusoft.FrameWork.Models.NeuCache();
            bool isFindData = false;

            try
            {
                if (this.Reader.Read())
                {
                    configInfo.DataVersion = Neusoft.FrameWork.Function.NConvert.ToDecimal(this.Reader[0].ToString());
                    configInfo.DLL         = this.Reader[1].ToString();
                    configInfo.Class       = this.Reader[2].ToString();
                    configInfo.Fun         = this.Reader[3].ToString();
                    configInfo.Valid       = Neusoft.FrameWork.Function.NConvert.ToBoolean(this.Reader[4]);

                    isFindData = true;
                }
            }
            catch (Exception e)
            {
                this.Err = e.Message;
                return(null);
            }
            finally
            {
                this.Reader.Close();
            }

            if (isFindData == false)
            {
                this.Err     = configInfo.ID.ToString() + " 类型数据未维护缓存管理信息。";
                this.ErrCode = "NoDataFound";
                return(null);
            }
            if (string.IsNullOrEmpty(configInfo.DLL) || string.IsNullOrEmpty(configInfo.Class) || string.IsNullOrEmpty(configInfo.Fun))
            {
                this.Err     = "未正确维护  " + cacheKey.ToString() + "   类型数据的数据提取管理程序";
                this.ErrCode = "NoManagmentFound";
                return(null);
            }
            if (configInfo.Valid == false)
            {
                this.Err     = configInfo.ID.ToString() + " 类型数据暂停了缓存处理。";
                this.ErrCode = "PauseCache";
                return(null);
            }

            return(configInfo);
        }
        /// <summary>
        /// 获取缓存数据
        /// </summary>
        /// <param name="cacheKey">数据索引</param>
        /// <param name="configInfo">缓存数据配置信息</param>
        /// <returns>成功返回数据 失败返回null</returns>
        private ArrayList LoadCacheData(Neusoft.FrameWork.Models.NeuCache configInfo, object[] funParam)
        {
            try
            {
                //装载程序集
                Assembly _assembly;
                if (cacheDataAssembly.ContainsKey(configInfo.DLL))
                {
                    _assembly = cacheDataAssembly[configInfo.DLL];
                }
                else
                {
                    _assembly = Assembly.LoadFrom("./\\" + configInfo.DLL + ".dll");
                    cacheDataAssembly.Add(configInfo.DLL, _assembly);
                }
                if (_assembly == null)
                {
                    this.Err = configInfo.DLL + ".dll 文件加载失败!";
                    return(null);
                }

                //类型反射
                Type _type;
                if (cacheDataType.ContainsKey(configInfo.DLL + configInfo.Class))
                {
                    _type = cacheDataType[configInfo.DLL + configInfo.Class];
                }
                else
                {
                    _type = _assembly.GetType(configInfo.Class);
                    cacheDataType.Add(configInfo.DLL + configInfo.Class, _type);
                }
                if (_type == null)
                {
                    this.Err = "程序集:" + configInfo.DLL + ".dll中无类型为" + configInfo.Class + "数据提供类!";
                    return(null);
                }

                //实例反射
                object _obj;
                if (cacheDataObject.ContainsKey(configInfo.DLL + configInfo.Class))
                {
                    _obj = cacheDataObject[configInfo.DLL + configInfo.Class];
                }
                else
                {
                    _obj = Activator.CreateInstance(_type, null);
                    cacheDataObject.Add(configInfo.DLL + configInfo.Class, _obj);
                }
                if (_obj == null)
                {
                    this.Err = "程序集:" + configInfo.DLL + ".dll中类型为" + configInfo.Class + " 的数据提供类创建失败!";
                    return(null);
                }

                MethodInfo m = _type.GetMethod(configInfo.Fun);

                return(m.Invoke(_obj, funParam) as ArrayList);
            }
            catch (Exception e)
            {
                this.Err = e.Message;
                return(null);
            }
        }