Ejemplo n.º 1
0
        public override void PerformAfter(InsertStatement node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            m_sql.Append(')');
        }
Ejemplo n.º 2
0
        public override void PerformOnValues(InsertStatement node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            m_sql.Append(") VALUES(");
        }
Ejemplo n.º 3
0
        public override void PerformBefore(InsertStatement node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            // INTO required by MS Access
            m_sql.Append("INSERT INTO ");
        }
Ejemplo n.º 4
0
        public INode Clone()
        {
            InsertStatement insertStatement = new InsertStatement();

            if (m_table != null)
            {
                insertStatement.Table = (DbObject)(m_table.Clone());
            }

            if (m_columnNames != null)
            {
                insertStatement.ColumnNames = (AliasedItem)(m_columnNames.Clone());
            }

            if (m_columnValues != null)
            {
                insertStatement.ColumnValues = (ExpressionItem)(m_columnValues.Clone());
            }

            return(insertStatement);
        }
Ejemplo n.º 5
0
 public virtual void PerformAfter(InsertStatement node)
 {
 }
Ejemplo n.º 6
0
 public virtual void PerformOnValues(InsertStatement node)
 {
 }
Ejemplo n.º 7
0
 public virtual void PerformBefore(InsertStatement node)
 {
 }
Ejemplo n.º 8
0
        public override void PerformBefore(InsertStatement node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            if (node.ColumnNames == null)
            {
                throw new InvalidOperationException("Insert has no names.");
            }

            bool shaving = true;

            while (shaving)
            {
                ExpressionItem headValue = node.ColumnValues;
                if (headValue == null)
                {
                    throw new InvalidOperationException(
                              "Insert statement has too few values.");
                }

                if (headValue.Expression.Equals(DefaultValue.Value))
                {
                    AliasedItem headColumn = node.ColumnNames.Next;
                    if (headColumn == null)
                    {
                        throw new InvalidOperationException(
                                  "MS Access cannot insert only default values.");
                    }

                    node.ColumnNames  = headColumn;
                    node.ColumnValues = headValue.Next;
                }
                else
                {
                    shaving = false;
                }
            }

            AliasedItem    tailColumn = node.ColumnNames;
            ExpressionItem tailValue  = node.ColumnValues;

            while (tailColumn.Next != null)
            {
                if (tailValue.Next == null)
                {
                    throw new InvalidOperationException("Insert has too few values.");
                }

                if (tailValue.Next.Expression.Equals(DefaultValue.Value))
                {
                    tailColumn.Next = tailColumn.Next.Next;
                    tailValue.Next  = tailValue.Next.Next;
                }
                else
                {
                    tailColumn = tailColumn.Next;
                    tailValue  = tailValue.Next;
                }
            }

            base.PerformBefore(node);
        }
Ejemplo n.º 9
0
 public override void PerformAfter(InsertStatement node)
 {
     PopKnownParent(node);
     Debug.Assert(m_ancestors.Count == 0);
 }
Ejemplo n.º 10
0
 public override void PerformBefore(InsertStatement node)
 {
     PushParent(node);
 }