Package org.apache.cayenne.access.jdbc

# Class JDBCResultIterator<T>

java.lang.Object
org.apache.cayenne.access.jdbc.JDBCResultIterator<T>

All Implemented Interfaces:
  `AutoCloseable`, `Iterable<T>`, `ResultIterator<T>`

public class JDBCResultIterator<T> extends Object implements ResultIterator<T>
A ResultIterator over the underlying JDBC ResultSet.

Since:
  1.2

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `closed`
  `protected boolean`
  `nextRow`
  `protected ResultSet`
  `resultSet`
  `protected Statement`
  `statement`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JDBCResultIterator(Statement statement, ResultSet resultSet, RowReader<T> rowReader)`
  Creates new JDBCResultIterator that reads from provided ResultSet.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<T>`
  `allRows()`
  Returns all yet unread rows from ResultSet without closing it.
  `protected void`
  `checkNextRow()`
  Moves internal ResultSet cursor position down one row.
  `void`
  `close()`
  Closes ResultIterator and associated ResultSet.
  `boolean`
  `hasNextRow()`
  Returns true if there is at least one more record that can be read from the iterator.
  `Iterator<T>`
  `iterator()`
  `T`
  `nextRow()`
  Returns the next result row that is, depending on the query, may be a scalar value, a DataRow, or an Object[] array containing a mix of scalars and DataRows.
  `void`
  `skipRow()`
  Goes past current row.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface java.lang.Iterable

  `forEach, spliterator`

- ## Field Details

  - ### statement

    protected Statement statement

  - ### resultSet

    protected ResultSet resultSet

  - ### closed

    protected boolean closed

  - ### nextRow

    protected boolean nextRow

- ## Constructor Details

  - ### JDBCResultIterator

    public JDBCResultIterator(Statement statement, ResultSet resultSet, RowReader<T> rowReader)
    Creates new JDBCResultIterator that reads from provided ResultSet.
    Since:
      4.0

- ## Method Details

  - ### iterator

    public Iterator<T> iterator()
    Specified by:
      `iterator` in interface `Iterable<T>`
    Since:
      4.0

  - ### allRows

    public List<T> allRows()
    Description copied from interface: `ResultIterator`
    Returns all yet unread rows from ResultSet without closing it.
    Specified by:
      `allRows` in interface `ResultIterator<T>`
    Since:
      3.0

  - ### hasNextRow

    public boolean hasNextRow()
    Returns true if there is at least one more record that can be read from the iterator.
    Specified by:
      `hasNextRow` in interface `ResultIterator<T>`

  - ### nextRow

    public T nextRow()
    Description copied from interface: `ResultIterator`
    Returns the next result row that is, depending on the query, may be a scalar value, a DataRow, or an Object[] array containing a mix of scalars and DataRows.
    Specified by:
      `nextRow` in interface `ResultIterator<T>`
    Since:
      3.0

  - ### skipRow

    public void skipRow()
    Description copied from interface: `ResultIterator`
    Goes past current row. If the row is not needed, this may save some time on data conversion.
    Specified by:
      `skipRow` in interface `ResultIterator<T>`
    Since:
      3.0

  - ### close

    public void close() throws NoSuchElementException
    Closes ResultIterator and associated ResultSet. This method must be called explicitly when the user is finished processing the records. Otherwise unused database resources will not be released properly.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `ResultIterator<T>`
    Throws:
      `NoSuchElementException`

  - ### checkNextRow

    protected void checkNextRow()
    Moves internal ResultSet cursor position down one row. Checks if the next row is available.