public static int ForEach(this SqlQuery query, IDbConnection connection, ReaderCallBack callBack) { int count = 0; if (connection.GetDialect().MultipleResultsets) { using (IDataReader reader = SqlHelper.ExecuteReader(connection, query)) { while (reader.Read()) { query.GetFromReader(reader); callBack(reader); } if (query.CountRecords && reader.NextResult() && reader.Read()) { return(Convert.ToInt32(reader.GetValue(0))); } } } else { string[] queries = query.ToString().Split(new string[] { "\n---\n" }, StringSplitOptions.RemoveEmptyEntries); if (queries.Length > 1) { count = Convert.ToInt32(SqlHelper.ExecuteScalar(connection, queries[1], query.Params)); } using (IDataReader reader = SqlHelper.ExecuteReader(connection, queries[0], query.Params)) { while (reader.Read()) { query.GetFromReader(reader); callBack(reader); } } } return(count); }
public static bool GetFirst(this SqlQuery query, IDbConnection connection) { using IDataReader reader = SqlHelper.ExecuteReader(connection, query); if (reader.Read()) { query.GetFromReader(reader); return(true); } else { return(false); } }
public static bool GetFirst(this SqlQuery query, IDbConnection connection, IEntity row, Dictionary param) { using IDataReader reader = SqlHelper.ExecuteReader(connection, query, param); if (reader.Read()) { query.GetFromReader(reader, new IEntity[] { row }); return(true); } else { return(false); } }
/// <summary> /// <see cref="SqlQuery"/> nesnesinin içerdiği sorguyu bağlantı üzerinde çalıştırır ve /// varsa sorgunun döndürdüğü ilk kaydı yükler.</summary> /// <remarks> /// <p>Bu bir extension metodu olduğundan direk <c>query.ForFirst(connection)</c> /// şeklinde de çalıştırılabilir.</p> /// <p><c>query.GetFromReader(reader)</c> işlemi ilk satır için çalıştırılır.</p> /// <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> /// Eğer en azından bir sonuç alındıysa <c>true</c></returns> public static bool GetFirst(this SqlQuery query, IDbConnection connection, Row row, Dictionary param) { using (IDataReader reader = ExecuteReader(connection, query, param)) { if (reader.Read()) { query.GetFromReader(reader, new Row[] { row }); return(true); } else { return(false); } } }
public static bool ForFirst(this SqlQuery query, IDbConnection connection, Action callBack) { using (IDataReader reader = SqlHelper.ExecuteReader(connection, query)) { if (reader.Read()) { query.GetFromReader(reader); callBack(); return(true); } else { return(false); } } }
public static bool GetSingle(this SqlQuery query, IDbConnection connection, IRow row, Dictionary param) { using IDataReader reader = SqlHelper.ExecuteReader(connection, query, param); if (reader.Read()) { query.GetFromReader(reader, new IRow[] { row }); if (reader.Read()) { throw new InvalidOperationException("Query returned more than one result!"); } return(true); } else { return(false); } }
/// <summary> /// <see cref="SqlQuery"/> nesnesinin içerdiği sorguyu bağlantı üzerinde çalıştırır ve /// varsa sorgunun döndürdüğü ilk kaydı yükler.</summary> /// <remarks> /// <p>Bu bir extension metodu olduğundan direk <c>query.ForFirst(connection)</c> /// şeklinde de çalıştırılabilir.</p> /// <p><c>query.GetFromReader(reader)</c> işlemi ilk satır için çalıştırılır.</p> /// <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> /// Eğer en azından bir sonuç alındıysa <c>true</c></returns> public static bool GetSingle(this SqlQuery query, IDbConnection connection) { using (IDataReader reader = ExecuteReader(connection, query)) { if (reader.Read()) { query.GetFromReader(reader); if (reader.Read()) { throw new InvalidOperationException("Query returned more than one result!"); } return(true); } else { return(false); } } }