public static bool ForFirst(this SqlQuery query, IDbConnection connection, ReaderCallBack callBack) { using IDataReader reader = SqlHelper.ExecuteReader(connection, query); if (reader.Read()) { query.GetFromReader(reader); callBack(reader); return(true); } else { return(false); } }
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); }