public void Init(IDataReader rdr) { if (Result == null) { Result = DataHelper.GetRecordSetByReader(rdr); } }
public void Read(IDataReader rdr) { if (Result == null) { Result = DataHelper.GetRecordSetByReader(rdr); } var rowValues = new object[rdr.FieldCount]; rdr.GetValues(rowValues); Result.Add(rowValues).AcceptChanges(); }
/// <summary> /// Creates a <see cref="RecordSet"/> and reads all rows from the supplied <see cref="IDataReader"/>. /// </summary> /// <param name="rdr">An <see cref="IDataReader"/> that provides a result set.</param> /// <param name="rowsCount">Max number of rows to load (-1 means no limit).</param> /// <returns><see cref="RecordSet"/> with schema inferred by reader and populated with incoming data.</returns> public static RecordSet FromReader(IDataReader rdr, int rowsCount) { RecordSet rs = DataHelper.GetRecordSetByReader(rdr); int read = 0; bool loadAll = rowsCount < 0; while ((loadAll || read < rowsCount) && rdr.Read()) { // just copy values var rowValues = new object[rdr.FieldCount]; rdr.GetValues(rowValues); rs.Add(rowValues).AcceptChanges(); read++; } return(rs); }
/// <summary> /// Creates a <see cref="RecordSet"/> from a data source using the supplied <see cref="IDataReader"/>. /// </summary> /// <param name="rdr">An <see cref="IDataReader"/> that provides a result set.</param> /// <returns><see cref="RecordSet"/> with schema inferred by reader and populated with incoming data.</returns> public static RecordSet FromReader(IDataReader rdr) { RecordSet rs = null; while (rdr.Read()) { if (rs == null) { rs = DataHelper.GetRecordSetByReader(rdr); } // just copy values var rowValues = new object[rdr.FieldCount]; rdr.GetValues(rowValues); rs.Add(rowValues).AcceptChanges(); } return(rs); }
/// <summary> /// Asynchronously creates a <see cref="RecordSet"/> from a data source using the supplied <see cref="IDataReader"/>. /// </summary> public static async Task <RecordSet> FromReaderAsync(IDataReader rdr, CancellationToken cancel) { RecordSet rs = null; while (await rdr.ReadAsync(cancel).ConfigureAwait(false)) { if (rs == null) { rs = DataHelper.GetRecordSetByReader(rdr); } // just copy values var rowValues = new object[rdr.FieldCount]; await rdr.GetValuesAsync(rowValues, cancel).ConfigureAwait(false); rs.Add(rowValues).AcceptChanges(); } return(rs); }