/** * Advance the result set and return a DatabaseRow populated * with values from the next valid row in the result set. Intended solely * for cursored stream support. */ public AbstractRecord cursorRetrieveNextRow(Vector fields, ResultSet resultSet, AbstractSession session) throws DatabaseException { try { if (resultSet.next()) { return fetchRow(fields, resultSet, resultSet.getMetaData(), session); } else { return null; } } catch (SQLException exception) { throw DatabaseException.sqlException(exception, this, session); } }
/** * Advance the result set and return a DatabaseRow populated * with values from the next valid row in the result set. Intended solely * for scrollable cursor support. */ public AbstractRecord cursorRetrievePreviousRow(Vector fields, ResultSet resultSet, AbstractSession session) throws DatabaseException { try { if (resultSet.previous()) { return fetchRow(fields, resultSet, resultSet.getMetaData(), session); } else { return null; } } catch (SQLException exception) { throw DatabaseException.sqlException(exception, this, session); } }
protected Object processResultSet(ResultSet resultSet, DatabaseCall dbCall, PreparedStatement statement, DatabaseAccessor accessor, AbstractSession session) throws SQLException { Object result = null; ResultSetMetaData metaData = resultSet.getMetaData(); session.startOperationProfile(SessionProfiler.ROW_FETCH); try { if (dbCall.isOneRowReturned()) { if (resultSet.next()) { result = accessor.fetchRow(dbCall.getFields(), resultSet, metaData, session); if (resultSet.next()) { // Raise more rows event, some apps may interpret as error or warning. session.getEventManager().moreRowsDetected(dbCall); } } else { result = null; } } else { Vector results = new Vector(20); while (resultSet.next()) { results.addElement(accessor.fetchRow(dbCall.getFields(), resultSet, metaData, session)); } result = results; } resultSet.close();// This must be closed incase the statement is cached and not closed. } finally { session.endOperationProfile(SessionProfiler.ROW_FETCH); } return result; }
result.addElement(fetchRow(fields, resultSet, metaData, session));
result.addElement(fetchRow(fields, resultSet, metaData, session));
results.addElement(fetchRow(dbCall.getFields(), resultSet, metaData, session)); hasNext = resultSet.next();