예제 #1
0
 public override string Render(Statement st)
 {
     if (values != null)
     {
         StringBuilder sb = new StringBuilder();
         sb.Append(exp.Render(st));
         if (!inOrNotIn)
         {
             sb.Append(" NOT ");
         }
         sb.Append("BETWEEN ( ");
         foreach (object val in values)
         {
             sb.AppendFormat("({0}){1} ", renderValue(val), " ,");
         }
         sb.removeLastChar();
         sb.Append(") ");
         return(sb.ToString());
     }
     //======
     if (table != null)
     {
         return(string.Format("(({0}) {1} ({2})", exp.Render(st), inOrNotIn ? "IN" : "NOT IN", table.renderInSelect()));
     }
     //======
     if (select != null)
     {
         return(string.Format("(({0}) {1} ({2})", exp.Render(st), inOrNotIn ? "IN" : "NOT IN", select.renderInSelect()));
     }
     //not supposed to come here
     return(null);
 }
예제 #2
0
        /// <summary>
        /// the same as render(), but ignoring 'order by' and 'limit offset'
        /// </summary>
        public override string renderInSelect()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("SELECT {0}", distinct ? "DISTINCT" : "");
            //select all
            if (tableFields == null && selectFields == null)
            {
                sb.Append(" * ");
            }
            //table fields
            if (tableFields != null)
            {
                foreach (DbTable t in tableFields)
                {
                    sb.AppendFormat(" {0}.* ,", t.Name);
                }
            }
            //fields
            if (selectFields != null)
            {
                foreach (expr exp in selectFields)
                {
                    sb.AppendFormat(" {0} ,", exp.Render(this));
                }
                sb.removeLastChar();
            }
            //from
            if (targetTable != null)
            {
                sb.AppendFormat(" FROM ({0}) ", targetTable.renderInSelect());
            }
            //where
            if (cond != null)
            {
                sb.AppendFormat(" WHERE ({0}) ", cond.Render(this));
            }
            //group by
            if (groupBys != null)
            {
                sb.Append(" GROUP BY ");
                foreach (expr ex in groupBys)
                {
                    sb.AppendFormat(" {0} ,", ex.Render(this));
                }
                sb.removeLastChar();
                if (havingExp != null)
                {
                    sb.AppendFormat(" HAVING ({0}) ", havingExp.Render(this));
                }
            }
            //
            return(sb.ToString());
        }
예제 #3
0
        public override string Render()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("DELETE FROM `{0}`", tbl.Name);
            if (cond != null)
            {
                sb.AppendFormat(" WHERE ({0})", cond.Render(this));
            }
            return(sb.ToString());
        }
예제 #4
0
        public virtual string createCommand()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("CREATE TRIGGER `{0}` {1} {2} ON `{3}`", this.name, before? "BEFORE" : "AFTER", events[(int)_event], tbl.Name);
            sb.Append(" FOR EACH ROW ");
            sb.AppendFormat(" WHEN ({0}) BEGIN", when.Render(null));
            foreach (NonQueryStatement st in triggerSteps)
            {
                sb.AppendFormat("{0} ;", st.Render());
            }
            sb.removeLastChar();
            sb.Append(" END");
            //
            return(sb.ToString());
        }
예제 #5
0
        //=====

        public override string Render()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("UPDATE `{0}` SET ", this.tbl.Name);
            foreach (Assignment asn in assigns)
            {
                sb.AppendFormat("{0} ,", asn.render(this));
            }
            sb.removeLastChar();
            //
            if (cond != null)
            {
                sb.AppendFormat(" WHERE ({0}) ", cond.Render(this));
            }
            return(sb.ToString());
        }
예제 #6
0
 public override string renderInSelect()
 {
     return(string.Format("({0}) {1} JOIN ({2}) ON ({3})", Tbl1.renderInSelect(), joinNames[(int)join], tbl2.renderInSelect(), on.Render(null)));
 }
예제 #7
0
 public string render()
 {
     return(string.Format(" ({0}) {1} ", exp.Render(null), so == SortOrder.ASC? "ASC" : "DESC"));
 }
예제 #8
0
 public override string Render(Statement st)
 {
     return(string.Format("({0}) AS {1}", exp.Render(st), _alias));
 }
예제 #9
0
 public override string Render(Statement st)
 {
     return(string.Format("({0}) {1}", exp.Render(st), _isNull? "ISNULL" : "NOTNULL"));
 }
예제 #10
0
 public override string Render(Statement st)
 {
     return(string.Format("(({0}) {1} ({2}) AND ({3})) ", exp.Render(st), _between? "BETWEEN": "NOT BETWEEN", exp1.Render(st), exp2.Render(st)));
 }
예제 #11
0
 public override string Render(Statement st)
 {
     return(string.Format("({0} {1}) ", op, exp.Render(st)));
 }
예제 #12
0
 public string render(Statement st)
 {
     return(string.Format("`{0}` = ({1})", cln.Name, val.Render(st)));
 }