/// <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); }
/// <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); }