Thank you for attention,
My task step by step looks like
- 1) execute prepared SQL query
2) extract ResultSet that implemented by specific JDBC driver (its important – I need implementation from driver jar)
3) extract from ResultSet columns java types and columns values
I have to solve two problems
- 1) huge number of records - work directly with ResultSet instead of temporary collections
2) convert SQL types of columns to java types - different databases give me different results, so I don't want to use any converters, I'm extracting this information from ResultSet
My working code
Code:
public static SqlRowSet executeQuery(JDBCConnection jdbcConnection, String sql, List parameters, Map values) {
configureDatasource(jdbcConnection);
JdbcTemplate template = new JdbcTemplate(datasource);
SqlRowSet resultSet = (SqlRowSet )
template.query(new ParametersSetter(sql, parameters, values),
new SqlRowSetResultSetExtractor());
return resultSet;
}
The received result set has following lacks
- 1) interface SqlRowSet doesn't implement method java.sql.ResultSet.getBinaryStream()
2) this result set is an instance of com.sun.rowset.CachedRowSetImpl , matadata of this result set is an instance of javax.sql.rowset.RowSetMetaDataImpl. When I try to extract java type of column from metadata with getColumnClassNamecolumn), I recieved type that differ with type that can be extracted from generic result set
(for example, MS SQL driver interprets SQL-type SMALLINT as Integer while RowSetMetaDataImpl gives me Short )
I'm newby with Spring, so may be you explain me my possible errors
Thanks in advance,
Andrey