예제 #1
0
        public virtual DbExpression CreateExpression(DbColumn column, DbFieldEntry fieldvalue, DbExpression.SqlCondition condition)
        {
            DbExpression expression = new DbExpression(column, fieldvalue, condition);

            expression.DbMgr = this;
            return(expression);
        }
예제 #2
0
        public override string ToString()
        {
            StringBuilder sb           = new StringBuilder();
            bool          has_auto_int = false;

            foreach (DbElement element in mColumns.Values)
            {
                if (element is DbFieldEntry)
                {
                    DbFieldEntry fieldvalue = (DbFieldEntry)element;
                    if (fieldvalue.IsValidValue && fieldvalue.Type == DbFieldEntry.EntryType.Type_auto_int)
                    {
                        has_auto_int = true;
                        break;
                    }
                }
            }

            if (has_auto_int)
            {
                sb.AppendFormat("SET IDENTITY_INSERT {0} ON ", DbMgr.FieldAlias(mTable));
            }

            sb.AppendFormat("INSERT INTO {0} (", DbMgr.FieldAlias(mTable));

            int column_counter      = 0;
            List <DbElement> values = new List <DbElement>();

            foreach (string columnname in mColumns.Keys)
            {
                DbElement fieldvalue = mColumns[columnname];
                if (fieldvalue.IsValidValue)
                {
                    if (column_counter == 0)
                    {
                        sb.AppendFormat("{0}", DbMgr.FieldAlias(columnname));
                    }
                    else
                    {
                        sb.AppendFormat(", {0}", DbMgr.FieldAlias(columnname));
                    }
                    values.Add(mColumns[columnname]);
                    column_counter++;
                }
            }

            sb.Append(") VALUES (");

            for (int i = 0; i != values.Count; ++i)
            {
                if (i == 0)
                {
                    sb.AppendFormat("{0}", values[i]);
                }
                else
                {
                    sb.AppendFormat(", {0}", values[i]);
                }
            }

            sb.Append(")");

            string where_text = WhereText;

            if (where_text != "")
            {
                sb.AppendFormat(" WHERE {0}", where_text);
            }

            if (has_auto_int)
            {
                sb.AppendFormat(" SET IDENTITY_INSERT {0} OFF ", DbMgr.FieldAlias(mTable));
            }

            return(sb.ToString());
        }