public override string ToPlainQuery() { StringBuilder sb = new StringBuilder(); if (IfNotExistsQuery != null) { sb.AppendFormat("IF NOT EXISTS ({0})", IfNotExistsQuery.ToPlainQuery()); } sb.AppendFormat(" INSERT INTO {0}", Table); if (InsertColumns.Count > 0) { sb.AppendFormat(" ({0})", String.Join($", ", InsertColumns.Select(r => $"{r.Name}"))); } if (FromQuery == null) { sb.AppendFormat(" VALUES ({0})", String.Join($", ", Enumerable.Range(0, InsertValues.Count).Select(r => $"@insP{r}"))); } else { sb.Append($" {FromQuery.Item1.ToPlainQuery()}"); } if (ElseUpdateQuery != null) { sb.AppendFormat(" ELSE {0}", ElseUpdateQuery.ToPlainQuery()); } return(sb.ToString().Trim()); }
PreparedSqlLiteInsertCommand CreateInsertCommand(SQLiteConnection conn, string extra) { var cols = InsertColumns.Where(column => column is DirectTableMappingColumn); string insertSql; if (!cols.Any() && DirectColumns.Count() == 1 && DirectColumns[0].IsAutoInc) { insertSql = string.Format("insert {1} into \"{0}\" default values", TableName, extra); } else { var replacing = string.Compare(extra, "OR REPLACE", StringComparison.OrdinalIgnoreCase) == 0; if (replacing) { cols = InsertOrReplaceColumns.Where(column => column is DirectTableMappingColumn); } insertSql = string.Format("insert {3} into \"{0}\"({1}) values ({2})", TableName, string.Join(",", (from c in cols select "\"" + c.Name + "\"").ToArray()), string.Join(",", (from c in cols select "?").ToArray()), extra); } var insertCommand = new PreparedSqlLiteInsertCommand(conn); insertCommand.CommandText = insertSql; return(insertCommand); }
protected virtual void ParseInsertColumnsClause(InsertColumns columns) { builder.Append('('); bool flag = false; foreach (var name in columns.Columns) { if (flag) { builder.Append(", "); } flag = true; builder.AppendName(name); } builder.Append(')'); }
private void AddColumns(string[] array) { Columns = new InsertColumns(array); }
public List <ColumnSegment> GetColumns() { return(null == InsertColumns ? new List <ColumnSegment>(0) : InsertColumns.GetColumns()); }