## org.springframework.jdbc.core
Class SqlRowSetResultSetExtractor

    java.lang.Object
      org.springframework.jdbc.core.SqlRowSetResultSetExtractor

All Implemented Interfaces:
  ResultSetExtractor<SqlRowSet>

    public class SqlRowSetResultSetExtractor

extends Object
implements ResultSetExtractor<SqlRowSet>

`ResultSetExtractor` implementation that returns a Spring `SqlRowSet` representation for each given `ResultSet`.

The default implementation uses a standard JDBC CachedRowSet underneath. This means that JDBC RowSet support needs to be available at runtime: by default, Sun's `com.sun.rowset.CachedRowSetImpl` class on Java 5 and 6, or the `javax.sql.rowset.RowSetProvider` mechanism on Java 7 / JDBC 4.1.

Since:
  1.2
Author:
  Juergen Hoeller
See Also:
  `newCachedRowSet()`, `SqlRowSet`, `JdbcTemplate.queryForRowSet(String)`, `CachedRowSet`

Constructor Summary
`SqlRowSetResultSetExtractor()`

Method Summary
`protected SqlRowSet` `createSqlRowSet(ResultSet rs)` Create a SqlRowSet that wraps the given ResultSet, representing its data in a disconnected fashion.
`SqlRowSet` `extractData(ResultSet rs)` Implementations must implement this method to process the entire ResultSet.
`protected CachedRowSet` `newCachedRowSet()` Create a new CachedRowSet instance, to be populated by the `createSqlRowSet` implementation.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SqlRowSetResultSetExtractor

    public SqlRowSetResultSetExtractor()

Method Detail

### extractData

    public SqlRowSet extractData(ResultSet rs)
                          throws SQLException

  Description copied from interface: `ResultSetExtractor`
  Implementations must implement this method to process the entire ResultSet.

  Specified by:
    `extractData` in interface `ResultSetExtractor<SqlRowSet>`
  Parameters:
    `rs` - ResultSet to extract data from. Implementations should not close this: it will be closed by the calling JdbcTemplate.
  Returns:
    an arbitrary result object, or `null` if none (the extractor will typically be stateful in the latter case).
  Throws:
    `SQLException` - if a SQLException is encountered getting column values or navigating (that is, there's no need to catch SQLException)

### createSqlRowSet

    protected SqlRowSet createSqlRowSet(ResultSet rs)
                                 throws SQLException

  Create a SqlRowSet that wraps the given ResultSet, representing its data in a disconnected fashion.

  This implementation creates a Spring ResultSetWrappingSqlRowSet instance that wraps a standard JDBC CachedRowSet instance. Can be overridden to use a different implementation.

  Parameters:
    `rs` - the original ResultSet (connected)
  Returns:
    the disconnected SqlRowSet
  Throws:
    `SQLException` - if thrown by JDBC methods
  See Also:
    `newCachedRowSet()`, `ResultSetWrappingSqlRowSet`

### newCachedRowSet

    protected CachedRowSet newCachedRowSet()
                                    throws SQLException

  Create a new CachedRowSet instance, to be populated by the `createSqlRowSet` implementation.

  The default implementation uses JDBC 4.1's RowSetProvider when running on JDK 7 or higher, falling back to Sun's `com.sun.rowset.CachedRowSetImpl` class on older JDKs.

  Returns:
    a new CachedRowSet instance
  Throws:
    `SQLException` - if thrown by JDBC methods
  See Also:
    `createSqlRowSet(java.sql.ResultSet)`, `CachedRowSetImpl`