Package org.postgresql.core
Interface ResultHandler
- All Known Implementing Classes:
BatchResultHandler,PgResultSet.CursorResultHandler,PgStatement.StatementResultHandler,ResultHandlerBase,ResultHandlerDelegate
public interface ResultHandler
Callback interface for passing query results from the protocol-specific layer to the protocol-independent JDBC implementation code.
In general, a single query execution will consist of a number of calls to handleResultRows, handleCommandStatus, handleWarning, and handleError, followed by a single call to handleCompletion when query execution is complete. If the caller wants to throw SQLException, this can be done in handleCompletion.
Each executed query ends with a call to handleResultRows, handleCommandStatus, or handleError. If an error occurs, subsequent queries won't generate callbacks.
-
Method Summary
Modifier and TypeMethodDescription@Nullable SQLExceptionReturns the first encountered exception.@Nullable SQLWarningReturns the first encountered warning.voidhandleCommandStatus(String status, long updateCount, long insertOID) Called when a query that did not return a resultset completes.voidCalled before a QueryExecutor method returns.voidhandleError(SQLException error) Called when an error occurs.voidhandleResultRows(Query fromQuery, Field[] fields, List<Tuple> tuples, @Nullable ResultCursor cursor) Called when result rows are received from a query.voidhandleWarning(SQLWarning warning) Called when a warning is emitted.voidCallback for batch statements.
-
Method Details
-
handleResultRows
void handleResultRows(Query fromQuery, Field[] fields, List<Tuple> tuples, @Nullable ResultCursor cursor) Called when result rows are received from a query.- Parameters:
fromQuery- the underlying query that generated these results; this may not be very specific (e.g. it may be a query that includes multiple statements).fields- column metadata for the resultset; might benullif Query.QUERY_NO_METADATA was specified.tuples- the actual datacursor- a cursor to use to fetch additional data;nullif no further results are present.
-
handleCommandStatus
Called when a query that did not return a resultset completes.- Parameters:
status- the command status string (e.g. "SELECT") returned by the backendupdateCount- the number of rows affected by an INSERT, UPDATE, DELETE, FETCH, or MOVE command; -1 if not available.insertOID- for a single-row INSERT query, the OID of the newly inserted row; 0 if not available.
-
handleWarning
Called when a warning is emitted.- Parameters:
warning- the warning that occurred.
-
handleError
Called when an error occurs. Subsequent queries are abandoned; in general the only calls between a handleError call and a subsequent handleCompletion call are handleError or handleWarning.- Parameters:
error- the error that occurred
-
handleCompletion
Called before a QueryExecutor method returns. This method may throw a SQLException if desired; if it does, the QueryExecutor method will propagate that exception to the original caller.- Throws:
SQLException- if the handler wishes the original method to throw an exception.
-
secureProgress
void secureProgress()Callback for batch statements. In case batch statement is executed in autocommit==true mode, the executor might commit "as it this it is best", so the result handler should track which statements are executed successfully and which are not. -
getException
@Nullable SQLException getException()Returns the first encountered exception. The rest are chained viaSQLException.setNextException(SQLException)- Returns:
- the first encountered exception
-
getWarning
@Nullable SQLWarning getWarning()Returns the first encountered warning. The rest are chained viaSQLException.setNextException(SQLException)- Returns:
- the first encountered warning
-