示例#1
0
        /// <summary>
        /// 适配SQL中的匿名参数
        /// </summary>
        /// <param name="SQL">包含匿名参数的SQL语句</param>
        /// <param name="param">参数对象列表</param>
        /// <returns></returns>
        public virtual ParameterizedSQL AdaptSQLAnonymousParams(string SQL, params object[] param)
        {
            System.Data.IDataParameter[] IParams;
            IParams = null;
            if (!String.IsNullOrEmpty(SQL) && param != null && param.Length > 0)
            {
                ParameterizedSQL ps = new ParameterizedSQL();
                if (SQL.EndsWith("?"))
                {
                    SQL += " ";//这里添加一个空格,避免Split后,数组个数错误
                }
                String[] parts = SQL.Split(new char[] { '?' }, StringSplitOptions.RemoveEmptyEntries);
                if (parts.Length - 1 != param.Length)
                {
                    throw new ArgumentException("SQL中匿名参数个数与参数列表不匹配");
                }

                StringBuilder sBuilder = new StringBuilder(parts[0]);
                ArrayList     arr      = new ArrayList();
                for (int i = 1; i < parts.Length; i++)
                {
                    string paraName = this.AdaptParameterName("p" + i);
                    sBuilder.Append(paraName + parts[i]);
                    arr.Add(CreateParameter(paraName, param[i - 1]));
                }
                IParams       = (IDataParameter[])arr.ToArray(typeof(IDataParameter));
                ps.SQL        = sBuilder.ToString();
                ps.Parameters = IParams;
                return(ps);
            }
            //没有加工
            ParameterizedSQL defaultps = new ParameterizedSQL();

            defaultps.SQL = SQL;
            return(defaultps);
        }
示例#2
0
        /// <summary>
        /// 获取匿名参数SQL
        /// </summary>
        /// <param name="SQL"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public override ParameterizedSQL AdaptSQLAnonymousParams(string SQL, params object[] param)
        {
            System.Data.IDataParameter[] IParams;
            // IParameter IParams = null;
            ParameterizedSQL pSql = new ParameterizedSQL();

            if (param != null && param.Length > 0)
            {
                int             i  = 1;
                IDataParameters ps = new DataParameters(this);
                foreach (object p in param)
                {
                    if (p != null)
                    {
                        ps.AddParameterValue("p" + i, p);
                        i++;
                    }
                }
                IParams         = ps.Parameters;
                pSql.Parameters = IParams;
            }
            pSql.SQL = SQL;
            return(pSql);
        }