# Class NpgsqlNestedDataReader

Namespace
  Npgsql

Assembly
  Npgsql.dll

Reads a forward-only stream of rows from a nested data source. Can be retrieved using GetData(int) or GetData(int).

    public sealed class NpgsqlNestedDataReader : DbDataReader, IEnumerable, IDataReader, IDataRecord, IDisposable, IAsyncDisposable

Inheritance
  object
  MarshalByRefObject
  DbDataReader
  NpgsqlNestedDataReader

Implements
  IEnumerable
  IDataReader
  IDataRecord
  IDisposable
  IAsyncDisposable

Inherited Members
  DbDataReader.CloseAsync()
  DbDataReader.DisposeAsync()
  DbDataReader.GetFieldValueAsync<T>(int)
  DbDataReader.GetFieldValueAsync<T>(int, CancellationToken)
  DbDataReader.GetSchemaTable()
  DbDataReader.GetSchemaTableAsync(CancellationToken)
  DbDataReader.GetColumnSchemaAsync(CancellationToken)
  DbDataReader.GetStream(int)
  DbDataReader.GetTextReader(int)
  DbDataReader.IsDBNullAsync(int)
  DbDataReader.IsDBNullAsync(int, CancellationToken)
  DbDataReader.NextResultAsync()
  DbDataReader.NextResultAsync(CancellationToken)
  DbDataReader.ReadAsync()
  DbDataReader.ReadAsync(CancellationToken)
  DbDataReader.VisibleFieldCount
  MarshalByRefObject.GetLifetimeService()
  MarshalByRefObject.InitializeLifetimeService()
  object.Equals(object)
  object.Equals(object, object)
  object.GetHashCode()
  object.GetType()
  object.ReferenceEquals(object, object)
  object.ToString()

## Properties

### Depth

Gets a value indicating the depth of nesting for the current row.

    public override int Depth { get; }

#### Property Value

int

  The depth of nesting for the current row.

### FieldCount

When overridden in a derived class, gets the number of columns in the current row.

    public override int FieldCount { get; }

#### Property Value

int

  The number of columns in the current row.

#### Exceptions

NotSupportedException

  There is no current connection to an instance of SQL Server.

### HasRows

When overridden in a derived class, gets a value that indicates whether this DbDataReader contains one or more rows.

    public override bool HasRows { get; }

#### Property Value

bool

  true if the DbDataReader contains one or more rows; otherwise, false.

### IsClosed

When overridden in a derived class, gets a value indicating whether the DbDataReader is closed.

    public override bool IsClosed { get; }

#### Property Value

bool

  true if the DbDataReader is closed; otherwise, false.

#### Exceptions

InvalidOperationException

  The DbDataReader is closed.

### this[int]

When overridden in a derived class, gets the value of the specified column as an instance of object.

    public override object this[int ordinal] { get; }

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Property Value

object

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

### this[string]

When overridden in a derived class, gets the value of the specified column as an instance of object.

    public override object this[string name] { get; }

#### Parameters

`name` string

  The name of the column.

#### Property Value

object

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  No column with the specified name was found.

### RecordsAffected

When overridden in a derived class, gets the number of rows changed, inserted, or deleted by execution of the SQL statement.

    public override int RecordsAffected { get; }

#### Property Value

int

  The number of rows changed, inserted, or deleted. -1 for SELECT statements; 0 if no rows were affected or the statement failed.

## Methods

### Close()

Closes the DbDataReader object.

    public override void Close()

### Dispose(bool)

Releases the unmanaged resources used by the DbDataReader and optionally releases the managed resources.

    protected override void Dispose(bool disposing)

#### Parameters

`disposing` bool

  true to release managed and unmanaged resources; false to release only unmanaged resources.

### GetBoolean(int)

When overridden in a derived class, gets the value of the specified column as a Boolean.

    public override bool GetBoolean(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

bool

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetByte(int)

When overridden in a derived class, gets the value of the specified column as a byte.

    public override byte GetByte(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

byte

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetBytes(int, long, byte[]?, int, int)

When overridden in a derived class, reads a specified number of bytes from the specified column starting at a specified index and writes them to a buffer starting at a specified position in the buffer.

    public override long GetBytes(int ordinal, long dataOffset, byte[]? buffer, int bufferOffset, int length)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

`dataOffset` long

  The index within the row from which to begin the read operation.

`buffer` byte[]

  The buffer into which to copy the data.

`bufferOffset` int

  The index with the buffer to which the data will be copied.

`length` int

  The maximum number of bytes to read.

#### Returns

long

  The actual number of bytes read.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetChar(int)

When overridden in a derived class, gets the value of the specified column as a single character.

    public override char GetChar(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

char

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetChars(int, long, char[]?, int, int)

When overridden in a derived class, reads a specified number of characters from a specified column starting at a specified index, and writes them to a buffer starting at a specified position.

    public override long GetChars(int ordinal, long dataOffset, char[]? buffer, int bufferOffset, int length)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

`dataOffset` long

  The index within the row from which to begin the read operation.

`buffer` char[]

  The buffer into which to copy the data.

`bufferOffset` int

  The index with the buffer to which the data will be copied.

`length` int

  The maximum number of characters to read.

#### Returns

long

  The actual number of characters read.

### GetData(int)

Returns a nested data reader for the requested column. The column type must be a record or a to Npgsql known composite type, or an array thereof.

    public NpgsqlNestedDataReader GetData(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

NpgsqlNestedDataReader

  A data reader.

### GetDataTypeName(int)

When overridden in a derived class, gets name of the data type of the specified column.

    public override string GetDataTypeName(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

string

  The name of the data type.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

### GetDateTime(int)

When overridden in a derived class, gets the value of the specified column as a DateTime object.

    public override DateTime GetDateTime(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

DateTime

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetDbDataReader(int)

Returns a DbDataReader object for the requested column ordinal that can be overridden with a provider-specific implementation.

    protected override DbDataReader GetDbDataReader(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

DbDataReader

  A DbDataReader object.

### GetDecimal(int)

When overridden in a derived class, gets the value of the specified column as a decimal.

    public override decimal GetDecimal(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

decimal

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetDouble(int)

When overridden in a derived class, gets the value of the specified column as a double-precision floating point number.

    public override double GetDouble(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

double

  The value of the specified column.

#### Exceptions

InvalidCastException

  The specified cast is not valid.

### GetEnumerator()

When overridden in a derived class, returns an enumerator that can be used to iterate through the rows in the data reader.

    public override IEnumerator GetEnumerator()

#### Returns

IEnumerator

  An enumerator that can be used to iterate through the rows in the data reader.

### GetFieldType(int)

When overridden in a derived class, gets the data type of the specified column.

    [UnconditionalSuppressMessage("ILLink", "IL2093", Justification = "No members are dynamically accessed by Npgsql via NpgsqlNestedDataReader.GetFieldType.")]
    public override Type GetFieldType(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

Type

  The data type of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetFieldValue<T>(int)

Gets the value of the specified column as the requested type.

    public override T GetFieldValue<T>(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

T

  The value of the specified column.

#### Type Parameters

`T`

  The type of the value to be returned.

#### Exceptions

InvalidOperationException

  The connection was dropped or closed during data retrieval.

  -or-

  The data reader was closed during data retrieval.

  -or-

  There is no data ready to be read (for example, the first Read() hasn't been called, or it returned false).

  -or-

  The reader tried to read a previously-read column in sequential mode.

  -or-

  There was an asynchronous operation in progress. This applies to all Get* methods when running in sequential mode, as they could be called while reading a stream.

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The value returned by the database doesn't match or cannot be cast to `T`.

### GetFloat(int)

When overridden in a derived class, gets the value of the specified column as a single-precision floating point number.

    public override float GetFloat(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

float

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetGuid(int)

When overridden in a derived class, gets the value of the specified column as a globally unique identifier (GUID).

    public override Guid GetGuid(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

Guid

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetInt16(int)

When overridden in a derived class, gets the value of the specified column as a 16-bit signed integer.

    public override short GetInt16(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

short

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetInt32(int)

When overridden in a derived class, gets the value of the specified column as a 32-bit signed integer.

    public override int GetInt32(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

int

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetInt64(int)

When overridden in a derived class, gets the value of the specified column as a 64-bit signed integer.

    public override long GetInt64(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

long

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetName(int)

When overridden in a derived class, gets the name of the column, given the zero-based column ordinal.

    public override string GetName(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

string

  The name of the specified column.

### GetOrdinal(string)

When overridden in a derived class, gets the column ordinal given the name of the column.

    public override int GetOrdinal(string name)

#### Parameters

`name` string

  The name of the column.

#### Returns

int

  The zero-based column ordinal.

#### Exceptions

IndexOutOfRangeException

  The name specified is not a valid column name.

### GetString(int)

When overridden in a derived class, gets the value of the specified column as an instance of string.

    public override string GetString(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

string

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

InvalidCastException

  The specified cast is not valid.

### GetValue(int)

When overridden in a derived class, gets the value of the specified column as an instance of object.

    public override object GetValue(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

object

  The value of the specified column.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

### GetValues(object[])

When overridden in a derived class, populates an array of objects with the column values of the current row.

    public override int GetValues(object[] values)

#### Parameters

`values` object[]

  An array of object into which to copy the attribute columns.

#### Returns

int

  The number of instances of object in the array.

### IsDBNull(int)

When overridden in a derived class, gets a value that indicates whether the column contains nonexistent or missing values.

    public override bool IsDBNull(int ordinal)

#### Parameters

`ordinal` int

  The zero-based column ordinal.

#### Returns

bool

  true if the specified column is equivalent to DBNull; otherwise, false.

#### Exceptions

IndexOutOfRangeException

  The column index is out of range.

### NextResult()

When overridden in a derived class, advances the reader to the next result when reading the results of a batch of statements.

    public override bool NextResult()

#### Returns

bool

  true if there are more result sets; otherwise, false.

### Read()

When overridden in a derived class, advances the reader to the next record in a result set.

    public override bool Read()

#### Returns

bool

  true if there are more rows; otherwise, false.