class SelectIterator implements CloseableIterator<T> {

	@Override
	public T nextThrow() throws SQLException {
		if (closed) {
			return null;
		}
		if (!alreadyMoved) {
			boolean hasResult;
			if (first) {
				first = false;
				hasResult = results.first();
			} else {
				hasResult = results.next();
			}
			// move forward
			if (!hasResult) {
				first = false;
				return null;
			}
		}
		first = false;
		return getCurrent();
	}

	public  SelectIterator(Class<?> dataClass, Dao<T, ID> classDao, GenericRowMapper<T> rowMapper,
			ConnectionSource connectionSource, DatabaseConnection connection, CompiledStatement compiledStmt,
			String statement, ObjectCache objectCache);

}