Interface ResultSet

  • All Superinterfaces:
    AutoCloseable, StructReader
    All Known Subinterfaces:
    AsyncResultSet
    All Known Implementing Classes:
    ForwardingAsyncResultSet, ForwardingResultSet

    public interface ResultSet
    extends AutoCloseable, StructReader
    Provides access to the data returned by a Cloud Spanner read or query. ResultSet allows a single row to be inspected at a time through the methods from the StructReader interface, in the order that the rows were returned by the read or query. The result set can be positioned over the next row, if one exists, by calling next(); this method returns false when all rows returned have been seen. The result set is initially positioned before the first row, so a call to next() is required before the first row can be inspected.

    ResultSet implementations may buffer data ahead and/or maintain a persistent streaming connection to the remote service until all data has been returned or the resultSet closed. As such, it is important that all uses of ResultSet either fully consume it (that is, call next() until false is returned or it throws an exception) or explicitly call close(): failure to do so may result in wasted work or leaked resources.

    ResultSet implementations are not required to be thread-safe: if methods are called from multiple threads, external synchronization must be used.

    • Method Detail

      • next

        boolean next()
              throws SpannerException
        Advances the result set to the next row, returning false if no such row exists. This method may block.
        Throws:
        SpannerException
      • getCurrentRowAsStruct

        Struct getCurrentRowAsStruct()
        Creates an immutable version of the row that the result set is positioned over. This may involve copying internal data structures, and so converting all rows to Struct objects is generally more expensive than processing the ResultSet directly.
      • close

        void close()
        Explicitly close the result set, releasing any associated resources. This must always be called when disposing of a ResultSet before next() has returned false or raised an exception. Calling close() is also allowed if the result set has been fully consumed, so a recommended practice is to unconditionally close the result set once it is done with, typically using a try-with-resources construct.
        Specified by:
        close in interface AutoCloseable