protected Map<String, Serializable> fetchCurrent() throws SQLException { Map<String, Serializable> map = q.selectInfo.mapMaker.makeMap(rs); if (logger.isLogEnabled()) { logger.logMap(map); } return map; }
protected Map<String, Serializable> fetchNext() throws StorageException, SQLException { if (rs == null) { return null; } if (!rs.next()) { if (logger.isLogEnabled()) { logger.log(" -> END"); } return null; } return fetchCurrent(); }
public ResultSetQueryResult( QueryMaker queryMaker, String query, QueryFilter queryFilter, PathResolver pathResolver, JDBCMapper mapper, Object... params) throws StorageException, SQLException { logger = mapper.logger; q = queryMaker.buildQuery( mapper.sqlInfo, mapper.model, pathResolver, query, queryFilter, params); if (q == null) { logger.log("Query cannot return anything due to conflicting clauses"); ps = null; rs = null; eof = true; return; } else { eof = false; } if (logger.isLogEnabled()) { logger.logSQL(q.selectInfo.sql, q.selectParams); } ps = mapper.connection.prepareStatement( q.selectInfo.sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); int i = 1; for (Object object : q.selectParams) { if (object instanceof Calendar) { Calendar cal = (Calendar) object; Timestamp ts = new Timestamp(cal.getTimeInMillis()); ps.setTimestamp(i++, ts, cal); // cal passed for timezone } else if (object instanceof String[]) { Array array = mapper.sqlInfo.dialect.createArrayOf( Types.VARCHAR, (Object[]) object, mapper.connection); ps.setArray(i++, array); } else { ps.setObject(i++, object); } } rs = ps.executeQuery(); // rs.setFetchDirection(ResultSet.FETCH_UNKNOWN); fails in H2 }