private void ProcessQueryValues(StringBuilder sb, CompareSegment segment, QueryBuildInfo buildInfo, IDbLayer dbLayer) { sb.Append(" IN "); var querySegment = (QuerySegment)segment.Right; ProcessQuery(sb, querySegment, buildInfo, dbLayer); }
private void ProcessBetween(StringBuilder sb, CompareSegment segment, QueryBuildInfo buildInfo, IDbLayer dbLayer) { sb.Append(" BETWEEN ? AND ? "); var valueSegment = (ValueSegment)segment.Right; object[] values = valueSegment.Values; for (int i = 0, valuesLength = 2; i < valuesLength; i++) { Object value = values[i]; var param = new QueryExecParam(); param.Index = buildInfo.ExecInfo.Params.Count; param.Type = valueSegment.Type; param.Value = value; buildInfo.ExecInfo.Params.Add(param); } }
private void ProcessInValues(StringBuilder sb, CompareSegment segment, QueryBuildInfo buildInfo) { sb.Append(" IN ("); var valueSegment = (ValueSegment)segment.Right; object[] values = valueSegment.Values; for (int i = 0, valuesLength = values.Length; i < valuesLength; i++) { Object value = values[i]; if (i > 0) { sb.Append(","); } sb.Append("?"); var param = new QueryExecParam(); param.Index = buildInfo.ExecInfo.Params.Count; param.Type = valueSegment.Type; param.Value = value; buildInfo.ExecInfo.Params.Add(param); } sb.Append(") "); }
protected T BaseNotExists() { var segment = new CompareSegment(CompareSegmentMode.NotExists); return(AddSegment(segment)); }
private void ProcessCompare(StringBuilder sb, CompareSegment segment, QueryBuildInfo buildInfo, IDbLayer dbLayer) { if (segment.Left != null) { Process(sb, segment.Left, buildInfo, dbLayer); } switch (segment.Mode) { case CompareSegmentMode.Between: ProcessBetween(sb, segment, buildInfo, dbLayer); return; case CompareSegmentMode.In: switch (segment.Right.SegmentType) { case SegmentType.Value: ProcessInValues(sb, segment, buildInfo); break; case SegmentType.Query: ProcessQueryValues(sb, segment, buildInfo, dbLayer); break; } return; case CompareSegmentMode.Exists: sb.Append(" EXISTS "); break; case CompareSegmentMode.NotExists: sb.Append(" NOT EXISTS "); break; case CompareSegmentMode.Eq: sb.Append(" = "); break; case CompareSegmentMode.Ge: sb.Append(" >= "); break; case CompareSegmentMode.Gt: sb.Append(" > "); break; case CompareSegmentMode.Le: sb.Append(" <= "); break; case CompareSegmentMode.Lt: sb.Append(" < "); break; case CompareSegmentMode.Like: sb.Append(" like "); break; case CompareSegmentMode.Neq: sb.Append(" <> "); break; default: break; } Process(sb, segment.Right, buildInfo, dbLayer); }
protected T BaseIn() { var segment = new CompareSegment(CompareSegmentMode.In); return(AddSegment(segment)); }
protected T BaseBetween() { var segment = new CompareSegment(CompareSegmentMode.Between); return(AddSegment(segment)); }
protected T BaseLike() { var segment = new CompareSegment(CompareSegmentMode.Like); return(AddSegment(segment)); }
protected T BaseNeq() { var segment = new CompareSegment(CompareSegmentMode.Neq); return(AddSegment(segment)); }
protected T BaseGt() { var segment = new CompareSegment(CompareSegmentMode.Gt); return(AddSegment(segment)); }