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
ConstructorDescriptionResultSetWrappingSqlRowSet
(ResultSet resultSet) Create a newResultSetWrappingSqlRowSet
for the givenResultSet
. -
Method Summary
Modifier and TypeMethodDescriptionboolean
absolute
(int row) Move the cursor to the given row number in the row set, just after the last row.void
Move the cursor to the end of this row set.void
Move the cursor to the front of this row set, just before the first row.int
findColumn
(String columnLabel) Map the given column label to its column index.boolean
first()
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.boolean
getBoolean
(int columnIndex) Retrieve the value of the indicated column in the current row as a boolean.boolean
getBoolean
(String columnLabel) Retrieve the value of the indicated column in the current row as a boolean.byte
getByte
(int columnIndex) Retrieve the value of the indicated column in the current row as a byte.byte
Retrieve 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.double
getDouble
(int columnIndex) Retrieve the value of the indicated column in the current row as a Double object.double
Retrieve the value of the indicated column in the current row as a Double object.float
getFloat
(int columnIndex) Retrieve the value of the indicated column in the current row as a float.float
Retrieve the value of the indicated column in the current row as a float.int
getInt
(int columnIndex) Retrieve the value of the indicated column in the current row as an int.int
Retrieve the value of the indicated column in the current row as an int.long
getLong
(int columnIndex) Retrieve the value of the indicated column in the current row as a long.long
Retrieve the value of the indicated column in the current row as a long.final SqlRowSetMetaData
Retrieve 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> T
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.Retrieve the value of the indicated column in the current row as an Object.<T> T
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.final ResultSet
Return the underlying ResultSet (usually ajavax.sql.rowset.CachedRowSet
).int
getRow()
Retrieve the current row number.short
getShort
(int columnIndex) Retrieve the value of the indicated column in the current row as a short.short
Retrieve 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.boolean
Retrieve whether the cursor is after the last row of this row set.boolean
Retrieve whether the cursor is before the first row of this row set.boolean
isFirst()
Retrieve whether the cursor is on the first row of this row set.boolean
isLast()
Retrieve whether the cursor is on the last row of this row set.boolean
last()
Move the cursor to the last row of this row set.boolean
next()
Move the cursor to the next row.boolean
previous()
Move the cursor to the previous row.boolean
relative
(int rows) Move the cursor a relative number of rows, either positive or negative.boolean
wasNull()
Report whether the last column read had a value of SQLNULL
.
-
Constructor Details
-
ResultSetWrappingSqlRowSet
Create a newResultSetWrappingSqlRowSet
for 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:SqlRowSet
Retrieve the meta-data, i.e. number, types and properties for the columns of this row set.- Specified by:
getMetaData
in interfaceSqlRowSet
- Returns:
- a corresponding SqlRowSetMetaData instance
- See Also:
-
findColumn
Description copied from interface:SqlRowSet
Map the given column label to its column index.- Specified by:
findColumn
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as a BigDecimal object.- Specified by:
getBigDecimal
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as a BigDecimal object.- Specified by:
getBigDecimal
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- an BigDecimal object representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getBoolean
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a boolean.- Specified by:
getBoolean
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a boolean representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getBoolean
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a boolean.- Specified by:
getBoolean
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- a boolean representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getByte
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a byte.- Specified by:
getByte
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a byte representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getByte
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a byte.- Specified by:
getByte
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- a byte representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getDate
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a Date object.- Specified by:
getDate
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a Date object representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getDate
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a Date object.- Specified by:
getDate
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- a Date object representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getDate
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a Date object.- Specified by:
getDate
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as a Date object.- Specified by:
getDate
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as a Double object.- Specified by:
getDouble
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a Double object representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getDouble
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a Double object.- Specified by:
getDouble
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- a Double object representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getFloat
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a float.- Specified by:
getFloat
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a float representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getFloat
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a float.- Specified by:
getFloat
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- a float representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getInt
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as an int.- Specified by:
getInt
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- an int representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getInt
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as an int.- Specified by:
getInt
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- an int representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getLong
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a long.- Specified by:
getLong
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a long representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getLong
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a long.- Specified by:
getLong
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- a long representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getNString
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a String (for NCHAR, NVARCHAR, LONGNVARCHAR columns).- Specified by:
getNString
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a String representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getNString
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a String (for NCHAR, NVARCHAR, LONGNVARCHAR columns).- Specified by:
getNString
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- a String representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getObject
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as an Object.- Specified by:
getObject
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- an Object representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getObject
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as an Object.- Specified by:
getObject
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as an Object.- Specified by:
getObject
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as an Object.- Specified by:
getObject
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as an Object.- Specified by:
getObject
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as an Object.- Specified by:
getObject
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as a short.- Specified by:
getShort
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a short representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getShort
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a short.- Specified by:
getShort
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- a short representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getString
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a String.- Specified by:
getString
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a String representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getString
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a String.- Specified by:
getString
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- a String representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getTime
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a Time object.- Specified by:
getTime
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a Time object representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getTime
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a Time object.- Specified by:
getTime
in interfaceSqlRowSet
- Parameters:
columnLabel
- the column label- Returns:
- a Time object representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getTime
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a Time object.- Specified by:
getTime
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as a Time object.- Specified by:
getTime
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as a Timestamp object.- Specified by:
getTimestamp
in interfaceSqlRowSet
- Parameters:
columnIndex
- the column index- Returns:
- a Timestamp object representing the column value
- Throws:
InvalidResultSetAccessException
- See Also:
-
getTimestamp
Description copied from interface:SqlRowSet
Retrieve the value of the indicated column in the current row as a Timestamp object.- Specified by:
getTimestamp
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as a Timestamp object.- Specified by:
getTimestamp
in 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:SqlRowSet
Retrieve the value of the indicated column in the current row as a Timestamp object.- Specified by:
getTimestamp
in 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:SqlRowSet
Move the cursor to the given row number in the row set, just after the last row.- Specified by:
absolute
in interfaceSqlRowSet
- Parameters:
row
- the number of the row where the cursor should move- Returns:
true
if the cursor is on the row set,false
otherwise- Throws:
InvalidResultSetAccessException
- See Also:
-
afterLast
Description copied from interface:SqlRowSet
Move the cursor to the end of this row set.- Specified by:
afterLast
in interfaceSqlRowSet
- Throws:
InvalidResultSetAccessException
- See Also:
-
beforeFirst
Description copied from interface:SqlRowSet
Move the cursor to the front of this row set, just before the first row.- Specified by:
beforeFirst
in interfaceSqlRowSet
- Throws:
InvalidResultSetAccessException
- See Also:
-
first
Description copied from interface:SqlRowSet
Move the cursor to the first row of this row set.- Specified by:
first
in interfaceSqlRowSet
- Returns:
true
if the cursor is on a valid row,false
otherwise- Throws:
InvalidResultSetAccessException
- See Also:
-
getRow
Description copied from interface:SqlRowSet
Retrieve the current row number.- Specified by:
getRow
in interfaceSqlRowSet
- Returns:
- the current row number
- Throws:
InvalidResultSetAccessException
- See Also:
-
isAfterLast
Description copied from interface:SqlRowSet
Retrieve whether the cursor is after the last row of this row set.- Specified by:
isAfterLast
in interfaceSqlRowSet
- Returns:
true
if the cursor is after the last row,false
otherwise- Throws:
InvalidResultSetAccessException
- See Also:
-
isBeforeFirst
Description copied from interface:SqlRowSet
Retrieve whether the cursor is before the first row of this row set.- Specified by:
isBeforeFirst
in interfaceSqlRowSet
- Returns:
true
if the cursor is before the first row,false
otherwise- Throws:
InvalidResultSetAccessException
- See Also:
-
isFirst
Description copied from interface:SqlRowSet
Retrieve whether the cursor is on the first row of this row set.- Specified by:
isFirst
in interfaceSqlRowSet
- Returns:
true
if the cursor is after the first row,false
otherwise- Throws:
InvalidResultSetAccessException
- See Also:
-
isLast
Description copied from interface:SqlRowSet
Retrieve whether the cursor is on the last row of this row set.- Specified by:
isLast
in interfaceSqlRowSet
- Returns:
true
if the cursor is after the last row,false
otherwise- Throws:
InvalidResultSetAccessException
- See Also:
-
last
Description copied from interface:SqlRowSet
Move the cursor to the last row of this row set.- Specified by:
last
in interfaceSqlRowSet
- Returns:
true
if the cursor is on a valid row,false
otherwise- Throws:
InvalidResultSetAccessException
- See Also:
-
next
Description copied from interface:SqlRowSet
Move the cursor to the next row.- Specified by:
next
in interfaceSqlRowSet
- Returns:
true
if the new row is valid,false
if there are no more rows- Throws:
InvalidResultSetAccessException
- See Also:
-
previous
Description copied from interface:SqlRowSet
Move the cursor to the previous row.- Specified by:
previous
in interfaceSqlRowSet
- Returns:
true
if the new row is valid,false
if it is off the row set- Throws:
InvalidResultSetAccessException
- See Also:
-
relative
Description copied from interface:SqlRowSet
Move the cursor a relative number of rows, either positive or negative.- Specified by:
relative
in interfaceSqlRowSet
- Returns:
true
if the cursor is on a row,false
otherwise- Throws:
InvalidResultSetAccessException
- See Also:
-
wasNull
Description copied from interface:SqlRowSet
Report 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:
wasNull
in interfaceSqlRowSet
- Returns:
true
if the most recent column retrieved was SQLNULL
,false
otherwise- Throws:
InvalidResultSetAccessException
- See Also:
-