/// <summary> /// Initializes a new instance of the <see cref="Field"/> class. /// </summary> /// <param name="fields">The fields.</param> /// <param name="type">The type.</param> /// <param name="name">The name.</param> /// <param name="caption">The caption.</param> /// <param name="size">The size.</param> /// <param name="flags">The flags.</param> protected Field(ICollection <Field> fields, FieldType type, string name, LocalText caption, int size, FieldFlags flags) { this.name = name; expression = "T0." + SqlSyntax.AutoBracket(name); this.size = size; this.flags = flags; this.type = type; index = -1; minSelectLevel = SelectLevel.Auto; naturalOrder = 0; this.caption = caption; customAttributes = Array.Empty <object>(); if (fields != null) { fields.Add(this); } }
/// <summary> /// Adds a field of a given table alias to the SELECT statement. /// </summary> /// <param name="query">The query.</param> /// <param name="alias">A table alias that will be prepended to the field name with "." between</param> /// <param name="field">A field that only its field name will be used. It won't be set as a target.</param> /// <param name="columnName">A column name</param> /// <returns> /// The query itself. /// </returns> /// <exception cref="ArgumentNullException"> /// alias /// or /// field /// or /// columnName /// </exception> /// <remarks> /// Field is not set as a target, unlike field only overload, only field name is used. /// </remarks> public static SqlQuery Select(this SqlQuery query, IAlias alias, IField field, string columnName) { if (alias == null) { throw new ArgumentNullException("alias"); } if (field == null) { throw new ArgumentNullException("field"); } if (columnName == null) { throw new ArgumentNullException("columnName"); } return(query.Select(alias.NameDot + SqlSyntax.AutoBracket(field.Name), columnName)); }
/// <summary> /// Formats an INSERT query.</summary> /// <param name="tableName"> /// Tablename (required).</param> /// <param name="nameValuePairs"> /// Field names and values. Must be passed in the order of <c>[field1, value1, field2, /// value2, ...., fieldN, valueN]</c>. It must have even number of elements.</param> /// <returns> /// Formatted query.</returns> public static string Format(string tableName, List <string> nameValuePairs) { if (tableName == null || tableName.Length == 0) { throw new ArgumentNullException(tableName); } if (nameValuePairs == null) { throw new ArgumentNullException("nameValuePairs"); } if (nameValuePairs.Count % 2 != 0) { throw new ArgumentOutOfRangeException("nameValuePairs"); } StringBuilder sb = new StringBuilder("INSERT INTO ", 64 + nameValuePairs.Count * 16); sb.Append(SqlSyntax.AutoBracketValid(tableName)); sb.Append(" ("); for (int i = 0; i < nameValuePairs.Count; i += 2) { if (i > 0) { sb.Append(", "); } sb.Append(SqlSyntax.AutoBracket(nameValuePairs[i])); } sb.Append(") VALUES ("); for (int i = 1; i < nameValuePairs.Count; i += 2) { if (i > 1) { sb.Append(", "); } sb.Append(nameValuePairs[i]); } sb.Append(')'); return(sb.ToString()); }