Пример #1
0
        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());
        }
Пример #2
0
        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);
        }
Пример #3
0
        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(')');
        }
Пример #4
0
 private void AddColumns(string[] array)
 {
     Columns = new InsertColumns(array);
 }
Пример #5
0
 public List <ColumnSegment> GetColumns()
 {
     return(null == InsertColumns ? new List <ColumnSegment>(0) : InsertColumns.GetColumns());
 }