/// <summary> /// 解释 GROUP BY 子句。 /// </summary> /// <param name="DbParameters">用于缓存在解释过程中可能会产生的参数。</param> /// <returns></returns> public override string Parsing(ref List <IDbDataParameter> DbParameters) { GroupByBlock grpB = (GroupByBlock)this.Description; StringBuilder cBuffer = new StringBuilder(" GROUP BY"); FieldDescription fd = grpB.Fields[0]; fd.DescriptionParserAdapter = grpB.DescriptionParserAdapter; cBuffer.AppendFormat(" {0}", fd.GetParser().Parsing(ref DbParameters)); if (grpB.Fields.Count > 1) { for (int i = 1; i < grpB.Fields.Count; ++i) { fd = grpB.Fields[i]; fd.DescriptionParserAdapter = grpB.DescriptionParserAdapter; cBuffer.AppendFormat(", {0}", fd.GetParser().Parsing(ref DbParameters)); } } return(cBuffer.ToString()); }
/// <summary> /// IsNotNull 函数解释。 /// </summary> /// <param name="D">FunDescription 对象。</param> /// <param name="DbParameters">用于缓存在解释过程中可能会产生的参数。</param> /// <returns></returns> protected virtual string IsNotNullParsing(FunDescription D, ref List <IDbDataParameter> DbParameters) { if (D.Parameter is FieldDescription) { FieldDescription desObject = (FieldDescription)(D.Parameter); desObject.DescriptionParserAdapter = D.DescriptionParserAdapter; StringBuilder cBuffer = new StringBuilder(desObject.GetParser().Parsing(ref DbParameters)); cBuffer.Append(" IS NOT NULL"); return(cBuffer.ToString()); } else { throw new Exception("IsNotNull 函数的参数必须是一个字段类型。"); } }
/// <summary> /// NotIn 函数解释。 /// </summary> /// <param name="D">FunDescription 对象。</param> /// <param name="DbParameters">用于缓存在解释过程中可能会产生的参数。</param> /// <returns></returns> protected virtual string NotInParsing(FunDescription D, ref List <IDbDataParameter> DbParameters) { object[] values = (object[])D.Parameter; StringBuilder cBuffer = new StringBuilder(); FieldDescription fd = (FieldDescription)values[0]; fd.DescriptionParserAdapter = D.DescriptionParserAdapter; cBuffer.Append(fd.GetParser().Parsing(ref DbParameters)); cBuffer.Append(" NOT IN ("); bool AppendComma = false; // 是否加逗号标识。 for (int i = 1; i < values.Length; ++i) { string buf; if (values[i] is IDescription) { IDescription desObject = (IDescription)values[i]; desObject.DescriptionParserAdapter = D.DescriptionParserAdapter; buf = desObject.GetParser().Parsing(ref DbParameters); if (buf[0] == (char)0x20) { buf = buf.Remove(0, 1); } } else { IDbDataParameter p = Adapter.CreateDbParameter(string.Format("uf_inValue{0}", i), values[i]); AddDbParameter(ref DbParameters, p); buf = p.ParameterName; } if (AppendComma) { cBuffer.AppendFormat(", {0}", buf); } else { cBuffer.Append(buf); AppendComma = true; } } cBuffer.Append(")"); return(cBuffer.ToString()); }