/// <summary> /// Creates a clone of the query. /// </summary> /// <returns>A cloned query.</returns> /// <remarks> /// Clones states like TrackAssignments, AssignedFields etc, /// creates a copy of Params dictionary /// </remarks> public SqlQuery Clone() { var clone = new SqlQuery(); clone.dialect = dialect; clone.dialectOverridden = dialectOverridden; clone.skip = skip; clone.take = take; clone.countRecords = countRecords; clone.into = new List<object>(into); clone.intoIndex = intoIndex; Column s; for (var i = 0; i < columns.Count; i++) { s = columns[i]; var si = new Column(s.Expression, s.ColumnName, s.IntoRowIndex, s.IntoField); clone.columns.Add(si); } clone.from = new StringBuilder(from.ToString()); if (where != null) clone.where = new StringBuilder(where.ToString()); if (orderBy != null) { clone.orderBy = new List<string>(); clone.orderBy.AddRange(orderBy); } if (groupBy != null) clone.groupBy = new StringBuilder(groupBy.ToString()); if (having != null) clone.having = new StringBuilder(having.ToString()); if (parent != null) clone.parent = this.parent; else if (this.Params != null) foreach (var pair in this.Params) clone.AddParam(pair.Key, pair.Value); return clone; }
public Column(SqlQuery query, string expression, string columnName, object intoField) : this(expression, columnName, query.intoIndex, intoField) { query.columns.Add(this); }
/// <summary> /// <see cref="SqlQuery"/> nesnesinin içerdiği sorguyu bağlantı üzerinde çalıştırır.</summary> /// <remarks> /// <p>Eğer <see cref="SqlQuery.CacheTimeOut(int)"/> ile sorgu için saniye cinsinden bir önbellekleme /// süresi belirlenmişse bu değer kullanılır.</p></remarks> /// <param name="connection"> /// Sorgunun çalıştırılacağı bağlantı. Gerekirse otomatik olarak açılır.</param> /// <param name="query"> /// Sorguyu içeren <see cref="SqlQuery"/> nesnesi.</param> /// <returns> /// Sorgu sonuçlarına erişim sağlayan <see cref="IDataReader"/> nesnesi.</returns> public static IDataReader ExecuteReader(IDbConnection connection, SqlQuery query, Dictionary param) { return ExecuteReader(connection, query.ToString(), param); }
/// <summary> /// Bağlantı üzerinde tek değer döndüren bir <see cref="SqlQuery"/> sorgusunu çalıştırır.</summary> /// <param name="connection"> /// Sorgunun çalıştırılacağı bağlantı.</param> /// <param name="selectQuery"> /// Çalıştırılacak sorguyu içeren <see cref="SqlQuery"/> nesnesi.</param> /// <returns> /// Sorgunun döndürdüğü skalar değer.</returns> public static object ExecuteScalar(IDbConnection connection, SqlQuery selectQuery, Dictionary param) { if (selectQuery == null) throw new ArgumentNullException("selectQuery"); return ExecuteScalar(connection, selectQuery.ToString(), param); }
/// <summary> /// <see cref="SqlQuery"/> nesnesinin içerdiği sorguyu bağlantı üzerinde çalıştırır.</summary> /// <remarks> /// <p>Eğer <see cref="SqlQuery.CacheTimeOut(int)"/> ile sorgu için saniye cinsinden bir önbellekleme /// süresi belirlenmişse bu değer kullanılır.</p></remarks> /// <param name="connection"> /// Sorgunun çalıştırılacağı bağlantı. Gerekirse otomatik olarak açılır.</param> /// <param name="query"> /// Sorguyu içeren <see cref="SqlQuery"/> nesnesi.</param> /// <returns> /// Sorgu sonuçlarına erişim sağlayan <see cref="IDataReader"/> nesnesi.</returns> public static IDataReader ExecuteReader(IDbConnection connection, SqlQuery query) { return ExecuteReader(connection, query.ToString(), query.Params); }