示例#1
0
 void IDbSubQueryParent <DbSetSelectResultQuery <T> > .Refresh(IDbSubQuery <DbSetSelectResultQuery <T> > value)
 {
     _subQuery = value;
 }
示例#2
0
 internal DbSetSelectResultQuery(T query)
 {
     _query    = query;
     _subQuery = null;
 }
示例#3
0
        internal DbQueryBuilder Build(DataSource ds)
        {
            if (_type == DbWhereType.Unkown)
            {
                throw new ArgumentException();
            }
            switch (_type)
            {
            case DbWhereType.Default:
            {
                return(new DbQueryBuilder("1=1", null));
            }

            case DbWhereType.Equal:
            {
                if (_value == null)
                {
                    return(new DbQueryBuilder(string.Concat(GetName(ds), " IS NULL"), null));
                }
                DataParameter p = GetParameter(ds);
                return(new DbQueryBuilder(string.Concat(GetName(ds), '=', p.GetParameterName()), p));
            }

            case DbWhereType.NotEqual:
            {
                if (_value == null)
                {
                    return(new DbQueryBuilder(string.Concat("NOT ", GetName(ds), " IS NULL"), null));
                }
                DataParameter p = GetParameter(ds);
                return(new DbQueryBuilder(string.Concat(GetName(ds), "<>", p.GetParameterName()), p));
            }

            case DbWhereType.GreaterThan:
            {
                if (_value == null)
                {
                    throw new ArgumentNullException();
                }
                DataParameter p = GetParameter(ds);
                return(new DbQueryBuilder(string.Concat(GetName(ds), '>', p.GetParameterName()), p));
            }

            case DbWhereType.GreaterThanOrEqual:
            {
                if (_value == null)
                {
                    throw new ArgumentNullException();
                }
                DataParameter p = GetParameter(ds);
                return(new DbQueryBuilder(string.Concat(GetName(ds), ">=", p.GetParameterName()), p));
            }

            case DbWhereType.LessThan:
            {
                if (_value == null)
                {
                    throw new ArgumentNullException();
                }
                DataParameter p = GetParameter(ds);
                return(new DbQueryBuilder(string.Concat(GetName(ds), '<', p.GetParameterName()), p));
            }

            case DbWhereType.LessThanOrEqual:
            {
                if (_value == null)
                {
                    throw new ArgumentNullException();
                }
                DataParameter p = GetParameter(ds);
                return(new DbQueryBuilder(string.Concat(GetName(ds), "<=", p.GetParameterName()), p));
            }

            case DbWhereType.Like:
            {
                if (_value == null)
                {
                    throw new ArgumentNullException();
                }
                DataParameter p = GetParameter(ds, string.Concat('%', Convert.ToString(_value), '%'));
                return(new DbQueryBuilder(string.Concat(GetName(ds), " LIKE ", p.GetParameterName()), p));
            }

            case DbWhereType.LikeBegin:
            {
                if (_value == null)
                {
                    throw new ArgumentNullException();
                }
                DataParameter p = GetParameter(ds, string.Concat(Convert.ToString(_value), '%'));
                return(new DbQueryBuilder(string.Concat(GetName(ds), " LIKE ", p.GetParameterName()), p));
            }

            case DbWhereType.LikeEnd:
            {
                if (_value == null)
                {
                    throw new ArgumentNullException();
                }
                DataParameter p = GetParameter(ds, string.Concat('%', Convert.ToString(_value)));
                return(new DbQueryBuilder(string.Concat(GetName(ds), " LIKE ", p.GetParameterName()), p));
            }

            case DbWhereType.In:
            {
                if (_value == null)
                {
                    throw new ArgumentNullException();
                }
                IEnumerable e = _value as IEnumerable;
                if (e != null)
                {
                    DataParameter        p;
                    List <string>        vs    = new List <string>();
                    List <DataParameter> ps    = new List <DataParameter>();
                    IEnumerator          array = e.GetEnumerator();
                    while (array.MoveNext())
                    {
                        p = GetParameter(ds, array.Current);
                        vs.Add(p.GetParameterName());
                        ps.Add(p);
                    }
                    return(new DbQueryBuilder(string.Concat(GetName(ds), " IN (", string.Join(",", vs.ToArray()), ')'), ps.ToArray()));
                }
                IDbSubQuery <DbWhere> q = _value as IDbSubQuery <DbWhere>;
                if (q != null)
                {
                    DbQueryBuilder builder = q.Build(ds, 0, false);
                    return(new DbQueryBuilder(string.Concat(GetName(ds), " IN (", builder.Sql, ')'), builder.Parameters));
                }
                throw new NotSupportedException();
            }
            }
            throw new NotSupportedException();
        }
示例#4
0
 void IDbSubQueryParent <DbWhere> .Refresh(IDbSubQuery <DbWhere> value)
 {
     Refresh(value);
 }
示例#5
0
 internal void Refresh(IDbSubQuery <DbWhere> value)
 {
     _value = value;
 }
示例#6
0
 void IDbSubQueryParent <DbInsertQuery <T> > .Refresh(IDbSubQuery <DbInsertQuery <T> > value)
 {
     _subQuery = value;
 }
示例#7
0
 internal DbInsertQuery(DbQuery <T> query, params DbColumn[] columns)
 {
     _query    = query;
     _insert   = columns;
     _subQuery = null;
 }