public override void PerformAfter(InsertStatement node) { if (node == null) { throw new ArgumentNullException("node"); } m_sql.Append(')'); }
public override void PerformOnValues(InsertStatement node) { if (node == null) { throw new ArgumentNullException("node"); } m_sql.Append(") VALUES("); }
public override void PerformBefore(InsertStatement node) { if (node == null) { throw new ArgumentNullException("node"); } // INTO required by MS Access m_sql.Append("INSERT INTO "); }
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); }
public virtual void PerformAfter(InsertStatement node) { }
public virtual void PerformOnValues(InsertStatement node) { }
public virtual void PerformBefore(InsertStatement node) { }
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); }
public override void PerformAfter(InsertStatement node) { PopKnownParent(node); Debug.Assert(m_ancestors.Count == 0); }
public override void PerformBefore(InsertStatement node) { PushParent(node); }