This implementation wraps a javax.sql.ResultSet
, catching any SQLExceptions and translating them to the appropriate Spring {@link InvalidResultSetAccessException}.
The passed-in ResultSets 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 new pattern but there are exceptions such as the com.sun.rowset.CachedRowSetImpl
class which only uses the column name, ignoring any column labels. As of Spring 3.0.5, ResultSetWrappingSqlRowSet will translate column labels to the correct column index to provide better support for the com.sun.rowset.CachedRowSetImpl
which is the default implementation used by {@link org.springframework.jdbc.core.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 this should usually work out.
@author Thomas Risberg
@author Juergen Hoeller
@since 1.2
@see java.sql.ResultSet
@see javax.sql.rowset.CachedRowSet
@see org.springframework.jdbc.core.JdbcTemplate#queryForRowSet
|
|
|
|
|
|
|
|