Class ResultSetWrappingSqlRowSet
- All Implemented Interfaces:
Serializable,SqlRowSet
SqlRowSet interface, wrapping a
ResultSet, catching any SQLExceptions and
translating them to a corresponding Spring InvalidResultSetAccessException.
The passed-in ResultSet should already be disconnected if the SqlRowSet is supposed
to be usable in a disconnected fashion. This means that you will usually pass in a
javax.sql.rowset.CachedRowSet, which implements the ResultSet interface.
Note: Since JDBC 4.0, it has been clarified that any methods using a String to identify
the column should be using the column label. The column label is assigned using the ALIAS
keyword in the SQL query string. When the query doesn't use an ALIAS, the default label is
the column name. Most JDBC ResultSet implementations follow this pattern, but there are
exceptions such as the com.sun.rowset.CachedRowSetImpl class which only uses
the column name, ignoring any column labels. ResultSetWrappingSqlRowSet
will translate column labels to the correct column index to provide better support for
com.sun.rowset.CachedRowSetImpl which is the default implementation used by
JdbcTemplate when working with RowSets.
Note: This class implements the java.io.Serializable marker interface
through the SqlRowSet interface, but is only actually serializable if the disconnected
ResultSet/RowSet contained in it is serializable. Most CachedRowSet implementations
are actually serializable, so serialization should usually work.
- Since:
- 1.2
- Author:
- Thomas Risberg, Juergen Hoeller
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionResultSetWrappingSqlRowSet(ResultSet resultSet) Create a newResultSetWrappingSqlRowSetfor the givenResultSet. -
Method Summary
Modifier and TypeMethodDescriptionbooleanabsolute(int row) Move the cursor to the given row number in the row set, just after the last row.voidMove the cursor to the end of this row set.voidMove the cursor to the front of this row set, just before the first row.intfindColumn(String columnLabel) Map the given column label to its column index.booleanfirst()Move the cursor to the first row of this row set.getBigDecimal(int columnIndex) Retrieve the value of the indicated column in the current row as a BigDecimal object.getBigDecimal(String columnLabel) Retrieve the value of the indicated column in the current row as a BigDecimal object.booleangetBoolean(int columnIndex) Retrieve the value of the indicated column in the current row as a boolean.booleangetBoolean(String columnLabel) Retrieve the value of the indicated column in the current row as a boolean.bytegetByte(int columnIndex) Retrieve the value of the indicated column in the current row as a byte.byteRetrieve the value of the indicated column in the current row as a byte.getDate(int columnIndex) Retrieve the value of the indicated column in the current row as a Date object.Retrieve the value of the indicated column in the current row as a Date object.Retrieve the value of the indicated column in the current row as a Date object.Retrieve the value of the indicated column in the current row as a Date object.doublegetDouble(int columnIndex) Retrieve the value of the indicated column in the current row as a Double object.doubleRetrieve the value of the indicated column in the current row as a Double object.floatgetFloat(int columnIndex) Retrieve the value of the indicated column in the current row as a float.floatRetrieve the value of the indicated column in the current row as a float.intgetInt(int columnIndex) Retrieve the value of the indicated column in the current row as an int.intRetrieve the value of the indicated column in the current row as an int.longgetLong(int columnIndex) Retrieve the value of the indicated column in the current row as a long.longRetrieve the value of the indicated column in the current row as a long.final SqlRowSetMetaDataRetrieve the meta-data, i.e.getNString(int columnIndex) Retrieve the value of the indicated column in the current row as a String (for NCHAR, NVARCHAR, LONGNVARCHAR columns).getNString(String columnLabel) Retrieve the value of the indicated column in the current row as a String (for NCHAR, NVARCHAR, LONGNVARCHAR columns).getObject(int columnIndex) Retrieve the value of the indicated column in the current row as an Object.<T> TRetrieve the value of the indicated column in the current row as an Object.Retrieve the value of the indicated column in the current row as an Object.Retrieve the value of the indicated column in the current row as an Object.<T> TRetrieve the value of the indicated column in the current row as an Object.Retrieve the value of the indicated column in the current row as an Object.final ResultSetReturn the underlying ResultSet (usually ajavax.sql.rowset.CachedRowSet).intgetRow()Retrieve the current row number.shortgetShort(int columnIndex) Retrieve the value of the indicated column in the current row as a short.shortRetrieve the value of the indicated column in the current row as a short.getString(int columnIndex) Retrieve the value of the indicated column in the current row as a String.Retrieve the value of the indicated column in the current row as a String.getTime(int columnIndex) Retrieve the value of the indicated column in the current row as a Time object.Retrieve the value of the indicated column in the current row as a Time object.Retrieve the value of the indicated column in the current row as a Time object.Retrieve the value of the indicated column in the current row as a Time object.getTimestamp(int columnIndex) Retrieve the value of the indicated column in the current row as a Timestamp object.getTimestamp(int columnIndex, Calendar cal) Retrieve the value of the indicated column in the current row as a Timestamp object.getTimestamp(String columnLabel) Retrieve the value of the indicated column in the current row as a Timestamp object.getTimestamp(String columnLabel, Calendar cal) Retrieve the value of the indicated column in the current row as a Timestamp object.booleanRetrieve whether the cursor is after the last row of this row set.booleanRetrieve whether the cursor is before the first row of this row set.booleanisFirst()Retrieve whether the cursor is on the first row of this row set.booleanisLast()Retrieve whether the cursor is on the last row of this row set.booleanlast()Move the cursor to the last row of this row set.booleannext()Move the cursor to the next row.booleanprevious()Move the cursor to the previous row.booleanrelative(int rows) Move the cursor a relative number of rows, either positive or negative.booleanwasNull()Report whether the last column read had a value of SQLNULL.
-
Constructor Details
-
ResultSetWrappingSqlRowSet
Create a newResultSetWrappingSqlRowSetfor the givenResultSet.- Parameters:
resultSet- a disconnected ResultSet to wrap (usually ajavax.sql.rowset.CachedRowSet)- Throws:
InvalidResultSetAccessException- if extracting the ResultSetMetaData failed- See Also:
-
-
Method Details
-
getResultSet
Return the underlying ResultSet (usually ajavax.sql.rowset.CachedRowSet).- See Also:
-
getMetaData
Description copied from interface:SqlRowSetRetrieve the meta-data, i.e. number, types and properties for the columns of this row set.- Specified by:
getMetaDatain interfaceSqlRowSet- Returns:
- a corresponding SqlRowSetMetaData instance
- See Also:
-
findColumn
Description copied from interface:SqlRowSetMap the given column label to its column index.- Specified by:
findColumnin interfaceSqlRowSet- Parameters:
columnLabel- the name of the column- Returns:
- the column index for the given column label
- Throws:
InvalidResultSetAccessException- See Also:
-
getBigDecimal
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a BigDecimal object.- Specified by:
getBigDecimalin interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- an BigDecimal object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getBigDecimal
@Nullable public BigDecimal getBigDecimal(String columnLabel) throws InvalidResultSetAccessException Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a BigDecimal object.- Specified by:
getBigDecimalin interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- an BigDecimal object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getBoolean
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a boolean.- Specified by:
getBooleanin interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a boolean representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getBoolean
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a boolean.- Specified by:
getBooleanin interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a boolean representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getByte
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a byte.- Specified by:
getBytein interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a byte representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getByte
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a byte.- Specified by:
getBytein interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a byte representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getDate
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Date object.- Specified by:
getDatein interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a Date object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getDate
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Date object.- Specified by:
getDatein interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a Date object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getDate
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Date object.- Specified by:
getDatein interfaceSqlRowSet- Parameters:
columnIndex- the column indexcal- the Calendar to use in constructing the Date- Returns:
- a Date object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getDate
@Nullable public Date getDate(String columnLabel, Calendar cal) throws InvalidResultSetAccessException Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Date object.- Specified by:
getDatein interfaceSqlRowSet- Parameters:
columnLabel- the column labelcal- the Calendar to use in constructing the Date- Returns:
- a Date object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getDouble
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Double object.- Specified by:
getDoublein interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a Double object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getDouble
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Double object.- Specified by:
getDoublein interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a Double object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getFloat
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a float.- Specified by:
getFloatin interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a float representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getFloat
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a float.- Specified by:
getFloatin interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a float representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getInt
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as an int.- Specified by:
getIntin interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- an int representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getInt
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as an int.- Specified by:
getIntin interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- an int representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getLong
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a long.- Specified by:
getLongin interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a long representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getLong
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a long.- Specified by:
getLongin interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a long representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getNString
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a String (for NCHAR, NVARCHAR, LONGNVARCHAR columns).- Specified by:
getNStringin interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a String representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getNString
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a String (for NCHAR, NVARCHAR, LONGNVARCHAR columns).- Specified by:
getNStringin interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a String representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getObject
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as an Object.- Specified by:
getObjectin interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- an Object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getObject
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as an Object.- Specified by:
getObjectin interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- an Object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getObject
@Nullable public Object getObject(int columnIndex, Map<String, Class<?>> map) throws InvalidResultSetAccessExceptionDescription copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as an Object.- Specified by:
getObjectin interfaceSqlRowSet- Parameters:
columnIndex- the column indexmap- a Map object containing the mapping from SQL types to Java types- Returns:
- an Object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getObject
@Nullable public Object getObject(String columnLabel, Map<String, Class<?>> map) throws InvalidResultSetAccessExceptionDescription copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as an Object.- Specified by:
getObjectin interfaceSqlRowSet- Parameters:
columnLabel- the column labelmap- a Map object containing the mapping from SQL types to Java types- Returns:
- an Object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getObject
@Nullable public <T> T getObject(int columnIndex, Class<T> type) throws InvalidResultSetAccessException Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as an Object.- Specified by:
getObjectin interfaceSqlRowSet- Parameters:
columnIndex- the column indextype- the Java type to convert the designated column to- Returns:
- an Object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getObject
@Nullable public <T> T getObject(String columnLabel, Class<T> type) throws InvalidResultSetAccessException Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as an Object.- Specified by:
getObjectin interfaceSqlRowSet- Parameters:
columnLabel- the column labeltype- the Java type to convert the designated column to- Returns:
- an Object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getShort
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a short.- Specified by:
getShortin interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a short representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getShort
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a short.- Specified by:
getShortin interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a short representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getString
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a String.- Specified by:
getStringin interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a String representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getString
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a String.- Specified by:
getStringin interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a String representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getTime
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Time object.- Specified by:
getTimein interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a Time object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getTime
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Time object.- Specified by:
getTimein interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a Time object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getTime
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Time object.- Specified by:
getTimein interfaceSqlRowSet- Parameters:
columnIndex- the column indexcal- the Calendar to use in constructing the Date- Returns:
- a Time object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getTime
@Nullable public Time getTime(String columnLabel, Calendar cal) throws InvalidResultSetAccessException Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Time object.- Specified by:
getTimein interfaceSqlRowSet- Parameters:
columnLabel- the column labelcal- the Calendar to use in constructing the Date- Returns:
- a Time object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getTimestamp
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Timestamp object.- Specified by:
getTimestampin interfaceSqlRowSet- Parameters:
columnIndex- the column index- Returns:
- a Timestamp object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getTimestamp
Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Timestamp object.- Specified by:
getTimestampin interfaceSqlRowSet- Parameters:
columnLabel- the column label- Returns:
- a Timestamp object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getTimestamp
@Nullable public Timestamp getTimestamp(int columnIndex, Calendar cal) throws InvalidResultSetAccessException Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Timestamp object.- Specified by:
getTimestampin interfaceSqlRowSet- Parameters:
columnIndex- the column indexcal- the Calendar to use in constructing the Date- Returns:
- a Timestamp object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
getTimestamp
@Nullable public Timestamp getTimestamp(String columnLabel, Calendar cal) throws InvalidResultSetAccessException Description copied from interface:SqlRowSetRetrieve the value of the indicated column in the current row as a Timestamp object.- Specified by:
getTimestampin interfaceSqlRowSet- Parameters:
columnLabel- the column labelcal- the Calendar to use in constructing the Date- Returns:
- a Timestamp object representing the column value
- Throws:
InvalidResultSetAccessException- See Also:
-
absolute
Description copied from interface:SqlRowSetMove the cursor to the given row number in the row set, just after the last row.- Specified by:
absolutein interfaceSqlRowSet- Parameters:
row- the number of the row where the cursor should move- Returns:
trueif the cursor is on the row set,falseotherwise- Throws:
InvalidResultSetAccessException- See Also:
-
afterLast
Description copied from interface:SqlRowSetMove the cursor to the end of this row set.- Specified by:
afterLastin interfaceSqlRowSet- Throws:
InvalidResultSetAccessException- See Also:
-
beforeFirst
Description copied from interface:SqlRowSetMove the cursor to the front of this row set, just before the first row.- Specified by:
beforeFirstin interfaceSqlRowSet- Throws:
InvalidResultSetAccessException- See Also:
-
first
Description copied from interface:SqlRowSetMove the cursor to the first row of this row set.- Specified by:
firstin interfaceSqlRowSet- Returns:
trueif the cursor is on a valid row,falseotherwise- Throws:
InvalidResultSetAccessException- See Also:
-
getRow
Description copied from interface:SqlRowSetRetrieve the current row number.- Specified by:
getRowin interfaceSqlRowSet- Returns:
- the current row number
- Throws:
InvalidResultSetAccessException- See Also:
-
isAfterLast
Description copied from interface:SqlRowSetRetrieve whether the cursor is after the last row of this row set.- Specified by:
isAfterLastin interfaceSqlRowSet- Returns:
trueif the cursor is after the last row,falseotherwise- Throws:
InvalidResultSetAccessException- See Also:
-
isBeforeFirst
Description copied from interface:SqlRowSetRetrieve whether the cursor is before the first row of this row set.- Specified by:
isBeforeFirstin interfaceSqlRowSet- Returns:
trueif the cursor is before the first row,falseotherwise- Throws:
InvalidResultSetAccessException- See Also:
-
isFirst
Description copied from interface:SqlRowSetRetrieve whether the cursor is on the first row of this row set.- Specified by:
isFirstin interfaceSqlRowSet- Returns:
trueif the cursor is after the first row,falseotherwise- Throws:
InvalidResultSetAccessException- See Also:
-
isLast
Description copied from interface:SqlRowSetRetrieve whether the cursor is on the last row of this row set.- Specified by:
isLastin interfaceSqlRowSet- Returns:
trueif the cursor is after the last row,falseotherwise- Throws:
InvalidResultSetAccessException- See Also:
-
last
Description copied from interface:SqlRowSetMove the cursor to the last row of this row set.- Specified by:
lastin interfaceSqlRowSet- Returns:
trueif the cursor is on a valid row,falseotherwise- Throws:
InvalidResultSetAccessException- See Also:
-
next
Description copied from interface:SqlRowSetMove the cursor to the next row.- Specified by:
nextin interfaceSqlRowSet- Returns:
trueif the new row is valid,falseif there are no more rows- Throws:
InvalidResultSetAccessException- See Also:
-
previous
Description copied from interface:SqlRowSetMove the cursor to the previous row.- Specified by:
previousin interfaceSqlRowSet- Returns:
trueif the new row is valid,falseif it is off the row set- Throws:
InvalidResultSetAccessException- See Also:
-
relative
Description copied from interface:SqlRowSetMove the cursor a relative number of rows, either positive or negative.- Specified by:
relativein interfaceSqlRowSet- Returns:
trueif the cursor is on a row,falseotherwise- Throws:
InvalidResultSetAccessException- See Also:
-
wasNull
Description copied from interface:SqlRowSetReport whether the last column read had a value of SQLNULL.Note that you must first call one of the getter methods and then call the
wasNull()method.- Specified by:
wasNullin interfaceSqlRowSet- Returns:
trueif the most recent column retrieved was SQLNULL,falseotherwise- Throws:
InvalidResultSetAccessException- See Also:
-