Class EmbedResultSet

java.lang.Object
org.apache.derby.impl.jdbc.ConnectionChild
org.apache.derby.impl.jdbc.EmbedResultSet
All Implemented Interfaces:
AutoCloseable, Comparable, ResultSet, Wrapper, EngineResultSet
Direct Known Subclasses:
EmbedResultSet42

public class EmbedResultSet extends ConnectionChild implements EngineResultSet, Comparable
A EmbedResultSet for results from the EmbedStatement family. Supports JDBC 4.1.
  • Field Details

    • fetchedRowBase

      private static long fetchedRowBase
      For use in debugging setLargeMaxRows() method added by JDBC 4.2
    • FIRST

      protected static final int FIRST
      See Also:
    • NEXT

      protected static final int NEXT
      See Also:
    • LAST

      protected static final int LAST
      See Also:
    • PREVIOUS

      protected static final int PREVIOUS
      See Also:
    • BEFOREFIRST

      protected static final int BEFOREFIRST
      See Also:
    • AFTERLAST

      protected static final int AFTERLAST
      See Also:
    • ABSOLUTE

      protected static final int ABSOLUTE
      See Also:
    • RELATIVE

      protected static final int RELATIVE
      See Also:
    • currentRow

      private ExecRow currentRow
      The currentRow contains the data of the current row of the resultset. If currentRow is null, the cursor is not postioned on a row
    • wasNull

      protected boolean wasNull
    • isClosed

      boolean isClosed
      Set if this ResultSet is definitely closed. If the connection has been closed, or the database or system shutdown but the ResultSet has not been closed explictly then this may be false. Once this object detects the connection is closed isClosed will be set to true.
    • isOnInsertRow

      private boolean isOnInsertRow
    • currentStream

      private Object currentStream
    • theResults

      private ResultSet theResults
    • forMetaData

      private boolean forMetaData
    • topWarning

      private SQLWarning topWarning
    • singleUseActivation

      Activation singleUseActivation
      This activation is set by EmbedStatement for a single execution Activation. Ie. a ResultSet from a Statement.executeQuery() or a ResultSet that is now a dynamic result set. In this case the closing of this ResultSet will close the activation or the finalization of the parent EmbedStatement without it being closed will mark the Activation as unused.
      See Also:
    • order

      final int order
    • resultDescription

      private final ResultDescription resultDescription
    • maxRows

      private long maxRows
    • maxFieldSize

      private final int maxFieldSize
    • NumberofFetchedRows

      private long NumberofFetchedRows
    • stmt

      private final EmbedStatement stmt
      The statement object that originally created us. we hang on to the statement to prevent GC from closing it under us
    • owningStmt

      private EmbedStatement owningStmt
      The statement that currently owns this ResultSet. Statements created in procedures are passed off to the Statement that called the procedure. This is to avoid the ResultSet being closed due to the Statement within the procedure or the nested Connection being closed.
    • applicationStmt

      private Statement applicationStmt
      Statement object the application used to create this ResultSet.
    • timeoutMillis

      private final long timeoutMillis
    • isAtomic

      private final boolean isAtomic
    • concurrencyOfThisResultSet

      private final int concurrencyOfThisResultSet
    • updateRow

      private final ExecRow updateRow
    • columnGotUpdated

      private boolean[] columnGotUpdated
    • currentRowHasBeenUpdated

      private boolean currentRowHasBeenUpdated
    • fetchDirection

      private int fetchDirection
    • fetchSize

      private int fetchSize
    • columnUsedFlags

      private boolean[] columnUsedFlags
      Indicates which columns have been fetched as a stream or as a LOB for a row. Created on-demand by a getXXXStream or a get[BC]lob call. Note that we only track columns that can be accessed as a stream or a LOB object.
  • Constructor Details

  • Method Details

    • setFetchedRowBase

      public static void setFetchedRowBase(long newBase)
      Debug method used to test the setLargeMaxRows() method added by JDBC 4.2. This method is a NOP on a production (insane) build of Derby.
    • checkNotOnInsertRow

      private void checkNotOnInsertRow() throws SQLException
      Throws:
      SQLException
    • checkOnRow

      protected final void checkOnRow() throws SQLException
      Throws:
      SQLException
    • initializeUpdateRowModifiers

      private void initializeUpdateRowModifiers()
      Initializes the currentRowHasBeenUpdated and columnGotUpdated fields
    • getColumnType

      final int getColumnType(int columnIndex) throws SQLException
      Check the column is in range *and* return the JDBC type of the column.
      Throws:
      SQLException - ResultSet is not on a row or columnIndex is out of range.
    • next

      public boolean next() throws SQLException
      A ResultSet is initially positioned before its first row; the first call to next makes the first row the current row; the second call makes the second row the current row, etc.

      If an input stream from the previous row is open, it is implicitly closed. The ResultSet's warning chain is cleared when a new row is read.

      Specified by:
      next in interface ResultSet
      Returns:
      true if the new current row is valid; false if there are no more rows
      Throws:
      SQLException - thrown on failure.
    • movePosition

      protected boolean movePosition(int position, String positionText) throws SQLException
      Throws:
      SQLException
    • movePosition

      protected boolean movePosition(int position, int row, String positionText) throws SQLException
      Throws:
      SQLException
    • close

      public void close() throws SQLException
      In some cases, it is desirable to immediately release a ResultSet's database and JDBC resources instead of waiting for this to happen when it is automatically closed; the close method provides this immediate release.

      Note: A ResultSet is automatically closed by the Statement that generated it when that Statement is closed, re-executed, or is used to retrieve the next result from a sequence of multiple results. A ResultSet is also automatically closed when it is garbage collected.

      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface ResultSet
      Throws:
      SQLException - thrown on failure.
    • markClosed

      private void markClosed()
      Mark this ResultSet as closed and trigger the closing of the Statement if necessary.
    • wasNull

      public final boolean wasNull() throws SQLException
      A column may have the value of SQL NULL; wasNull reports whether the last column read had this special value. Note that you must first call getXXX on a column to try to read its value and then call wasNull() to find if the value was the SQL NULL.

      we take the least exception approach and simply return false if no column has been read yet.

      Specified by:
      wasNull in interface ResultSet
      Returns:
      true if last column read was SQL NULL
      Throws:
      SQLException - Thrown if this ResultSet is closed
    • getString

      public final String getString(int columnIndex) throws SQLException
      Get the value of a column in the current row as a Java String.
      Specified by:
      getString in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getBoolean

      public final boolean getBoolean(int columnIndex) throws SQLException
      Get the value of a column in the current row as a Java boolean.
      Specified by:
      getBoolean in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is false
      Throws:
      SQLException - thrown on failure.
    • getByte

      public final byte getByte(int columnIndex) throws SQLException
      Get the value of a column in the current row as a Java byte.
      Specified by:
      getByte in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getShort

      public final short getShort(int columnIndex) throws SQLException
      Get the value of a column in the current row as a Java short.
      Specified by:
      getShort in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getInt

      public final int getInt(int columnIndex) throws SQLException
      Get the value of a column in the current row as a Java int.
      Specified by:
      getInt in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getLong

      public final long getLong(int columnIndex) throws SQLException
      Get the value of a column in the current row as a Java long.
      Specified by:
      getLong in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getFloat

      public final float getFloat(int columnIndex) throws SQLException
      Get the value of a column in the current row as a Java float.
      Specified by:
      getFloat in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getDouble

      public final double getDouble(int columnIndex) throws SQLException
      Get the value of a column in the current row as a Java double.
      Specified by:
      getDouble in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getBytes

      public final byte[] getBytes(int columnIndex) throws SQLException
      Get the value of a column in the current row as a Java byte array. The bytes represent the raw values returned by the driver.
      Specified by:
      getBytes in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getDate

      public final Date getDate(int columnIndex) throws SQLException
      Get the value of a column in the current row as a java.sql.Date object.
      Specified by:
      getDate in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getTime

      public final Time getTime(int columnIndex) throws SQLException
      Get the value of a column in the current row as a java.sql.Time object.
      Specified by:
      getTime in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getTimestamp

      public final Timestamp getTimestamp(int columnIndex) throws SQLException
      Get the value of a column in the current row as a java.sql.Timestamp object.
      Specified by:
      getTimestamp in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getDate

      public Date getDate(int columnIndex, Calendar cal) throws SQLException
      JDBC 2.0 Get the value of a column in the current row as a java.sql.Date object. Use the calendar to construct an appropriate millisecond value for the Date, if the underlying database doesn't store timezone information.
      Specified by:
      getDate in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      cal - the calendar to use in constructing the date
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - if a database-access error occurs.
    • getDate

      public Date getDate(String columnName, Calendar cal) throws SQLException
      JDBC 2.0 Get the value of a column in the current row as a java.sql.Date object. Use the calendar to construct an appropriate millisecond value for the Date, if the underlying database doesn't store timezone information.
      Specified by:
      getDate in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      cal - the calendar to use in constructing the date
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - if a database-access error occurs.
    • getTime

      public Time getTime(int columnIndex, Calendar cal) throws SQLException
      JDBC 2.0 Get the value of a column in the current row as a java.sql.Time object. Use the calendar to construct an appropriate millisecond value for the Time, if the underlying database doesn't store timezone information.
      Specified by:
      getTime in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      cal - the calendar to use in constructing the time
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - if a database-access error occurs.
    • getTime

      public Time getTime(String columnName, Calendar cal) throws SQLException
      JDBC 2.0 Get the value of a column in the current row as a java.sql.Time object. Use the calendar to construct an appropriate millisecond value for the Time, if the underlying database doesn't store timezone information.
      Specified by:
      getTime in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      cal - the calendar to use in constructing the time
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - if a database-access error occurs.
    • getTimestamp

      public Timestamp getTimestamp(String columnName, Calendar cal) throws SQLException
      JDBC 2.0 Get the value of a column in the current row as a java.sql.Timestamp object. Use the calendar to construct an appropriate millisecond value for the Timestamp, if the underlying database doesn't store timezone information.
      Specified by:
      getTimestamp in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      cal - the calendar to use in constructing the timestamp
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - if a database-access error occurs.
    • getTimestamp

      public Timestamp getTimestamp(int columnIndex, Calendar cal) throws SQLException
      JDBC 2.0 Get the value of a column in the current row as a java.sql.Timestamp object. Use the calendar to construct an appropriate millisecond value for the Timestamp, if the underlying database doesn't store timezone information.
      Specified by:
      getTimestamp in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      cal - the calendar to use in constructing the timestamp
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - if a database-access error occurs.
    • getCharacterStream

      public final Reader getCharacterStream(int columnIndex) throws SQLException
      JDBC 2.0

      Get the value of a column in the current row as a java.io.Reader.

      Specified by:
      getCharacterStream in interface ResultSet
      Throws:
      SQLException - database error.
    • getAsciiStream

      public final InputStream getAsciiStream(int columnIndex) throws SQLException
      Pushes a converter on top of getCharacterStream().
      Specified by:
      getAsciiStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      a Java input stream that delivers the database column value as a stream of one byte ASCII characters. If the value is SQL NULL then the result is null.
      Throws:
      SQLException - thrown on failure.
    • getBinaryStream

      public final InputStream getBinaryStream(int columnIndex) throws SQLException
      Get the column as an InputStream. If the column is already of type InputStream then just return it, otherwise convert the column to a set of bytes and create a stream out of the bytes.
      Specified by:
      getBinaryStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      a Java input stream that delivers the database column value as a stream of uninterpreted bytes. If the value is SQL NULL then the result is null.
      Throws:
      SQLException - thrown on failure.
    • getString

      public final String getString(String columnName) throws SQLException
      Get the value of a column in the current row as a Java String.
      Specified by:
      getString in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getBoolean

      public final boolean getBoolean(String columnName) throws SQLException
      Get the value of a column in the current row as a Java boolean.
      Specified by:
      getBoolean in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is false
      Throws:
      SQLException - thrown on failure.
    • getByte

      public final byte getByte(String columnName) throws SQLException
      Get the value of a column in the current row as a Java byte.
      Specified by:
      getByte in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getShort

      public final short getShort(String columnName) throws SQLException
      Get the value of a column in the current row as a Java short.
      Specified by:
      getShort in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getInt

      public final int getInt(String columnName) throws SQLException
      Get the value of a column in the current row as a Java int.
      Specified by:
      getInt in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getLong

      public final long getLong(String columnName) throws SQLException
      Get the value of a column in the current row as a Java long.
      Specified by:
      getLong in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getFloat

      public final float getFloat(String columnName) throws SQLException
      Get the value of a column in the current row as a Java float.
      Specified by:
      getFloat in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getDouble

      public final double getDouble(String columnName) throws SQLException
      Get the value of a column in the current row as a Java double.
      Specified by:
      getDouble in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is 0
      Throws:
      SQLException - thrown on failure.
    • getBigDecimal

      @Deprecated public final BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException
      Deprecated.
      Get the value of a column in the current row as a java.lang.BigDecimal object.
      Specified by:
      getBigDecimal in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      scale - the number of digits to the right of the decimal
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getBigDecimal

      public final BigDecimal getBigDecimal(int columnIndex) throws SQLException
      Specified by:
      getBigDecimal in interface ResultSet
      Throws:
      SQLException
    • getBigDecimal

      @Deprecated public final BigDecimal getBigDecimal(String columnName, int scale) throws SQLException
      Deprecated.
      Get the value of a column in the current row as a java.lang.BigDecimal object.
      Specified by:
      getBigDecimal in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      scale - the number of digits to the right of the decimal
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getBigDecimal

      public final BigDecimal getBigDecimal(String columnName) throws SQLException
      JDBC 2.0 Get the value of a column in the current row as a java.math.BigDecimal object.
      Specified by:
      getBigDecimal in interface ResultSet
      Throws:
      SQLException
    • getBytes

      public final byte[] getBytes(String columnName) throws SQLException
      Get the value of a column in the current row as a Java byte array. The bytes represent the raw values returned by the driver.
      Specified by:
      getBytes in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getDate

      public final Date getDate(String columnName) throws SQLException
      Get the value of a column in the current row as a java.sql.Date object.
      Specified by:
      getDate in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getTime

      public final Time getTime(String columnName) throws SQLException
      Get the value of a column in the current row as a java.sql.Time object.
      Specified by:
      getTime in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getTimestamp

      public final Timestamp getTimestamp(String columnName) throws SQLException
      Get the value of a column in the current row as a java.sql.Timestamp object.
      Specified by:
      getTimestamp in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      the column value; if the value is SQL NULL, the result is null
      Throws:
      SQLException - thrown on failure.
    • getCharacterStream

      public final Reader getCharacterStream(String columnName) throws SQLException
      JDBC 2.0

      Get the value of a column in the current row as a java.io.Reader.

      Specified by:
      getCharacterStream in interface ResultSet
      Throws:
      SQLException - Feature not implemented for now.
    • getAsciiStream

      public final InputStream getAsciiStream(String columnName) throws SQLException
      A column value can be retrieved as a stream of ASCII characters and then read in chunks from the stream. This method is particularly suitable for retrieving large LONGVARCHAR values. The JDBC driver will do any necessary conversion from the database format into ASCII.

      Note: All the data in the returned stream must be read prior to getting the value of any other column. The next call to a get method implicitly closes the stream.

      Specified by:
      getAsciiStream in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      a Java input stream that delivers the database column value as a stream of one byte ASCII characters. If the value is SQL NULL then the result is null.
      Throws:
      SQLException - thrown on failure.
    • getBinaryStream

      public final InputStream getBinaryStream(String columnName) throws SQLException
      A column value can be retrieved as a stream of uninterpreted bytes and then read in chunks from the stream. This method is particularly suitable for retrieving large LONGVARBINARY values.

      Note: All the data in the returned stream must be read prior to getting the value of any other column. The next call to a get method implicitly closes the stream.

      Specified by:
      getBinaryStream in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      a Java input stream that delivers the database column value as a stream of uninterpreted bytes. If the value is SQL NULL then the result is null.
      Throws:
      SQLException - thrown on failure.
    • getUnicodeStream

      @Deprecated public final InputStream getUnicodeStream(int columnIndex) throws SQLException
      Deprecated.
      JDBC 2.0 Deprecated in JDBC 2.0, not supported by JCC.
      Specified by:
      getUnicodeStream in interface ResultSet
      Throws:
      SQLException - thrown on failure.
    • getUnicodeStream

      @Deprecated public final InputStream getUnicodeStream(String columnName) throws SQLException
      Deprecated.
      Deprecated in JDBC 2.0, not supported by JCC.
      Specified by:
      getUnicodeStream in interface ResultSet
      Throws:
      SQLException - thrown on failure.
    • getURL

      public URL getURL(int columnIndex) throws SQLException
      JDBC 3.0 Retrieves the value of the designated column in the current row of this ResultSet object as a java.net.URL object in the Java programming language.
      Specified by:
      getURL in interface ResultSet
      Parameters:
      columnIndex - - the first column is 1, the second is 2
      Returns:
      the column value as a java.net.URL object, if the value is SQL NULL, the value returned is null in the Java programming language
      Throws:
      SQLException - Feature not implemented for now.
    • getURL

      public URL getURL(String columnName) throws SQLException
      JDBC 3.0 Retrieves the value of the designated column in the current row of this ResultSet object as a java.net.URL object in the Java programming language.
      Specified by:
      getURL in interface ResultSet
      Parameters:
      columnName - - the SQL name of the column
      Returns:
      the column value as a java.net.URL object, if the value is SQL NULL, the value returned is null in the Java programming language
      Throws:
      SQLException - Feature not implemented for now.
    • getWarnings

      public final SQLWarning getWarnings() throws SQLException

      The first warning reported by calls on this ResultSet is returned. Subsequent ResultSet warnings will be chained to this SQLWarning.

      The warning chain is automatically cleared each time a new row is read.

      Note: This warning chain only covers warnings caused by ResultSet methods. Any warning caused by statement methods (such as reading OUT parameters) will be chained on the Statement object.

      Specified by:
      getWarnings in interface ResultSet
      Returns:
      the first SQLWarning or null
      Throws:
      SQLException - Thrown if this ResultSet is closed
    • clearWarnings

      public final void clearWarnings() throws SQLException
      After this call getWarnings returns null until a new warning is reported for this ResultSet.
      Specified by:
      clearWarnings in interface ResultSet
      Throws:
      SQLException - Thrown if this ResultSet is closed
    • getCursorName

      public final String getCursorName() throws SQLException
      Get the name of the SQL cursor used by this ResultSet.

      In SQL, a result table is retrieved through a cursor that is named. The current row of a result can be updated or deleted using a positioned update/delete statement that references the cursor name.

      JDBC supports this SQL feature by providing the name of the SQL cursor used by a ResultSet. The current row of a ResultSet is also the current row of this SQL cursor.

      Note: If positioned update is not supported a SQLException is thrown

      Specified by:
      getCursorName in interface ResultSet
      Returns:
      the ResultSet's SQL cursor name
      Throws:
      SQLException - thrown on failure.
    • getMetaData

      public final ResultSetMetaData getMetaData() throws SQLException
      The number, types and properties of a ResultSet's columns are provided by the getMetaData method.
      Specified by:
      getMetaData in interface ResultSet
      Returns:
      the description of a ResultSet's columns
      Throws:
      SQLException - thrown on failure.
    • getHoldability

      public final int getHoldability() throws SQLException
      JDBC 4.0

      Retrieves the holdability for this ResultSet object.

      Specified by:
      getHoldability in interface ResultSet
      Returns:
      either ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT
      Throws:
      SQLException - if a database error occurs
    • getObject

      public final Object getObject(int columnIndex) throws SQLException

      Get the value of a column in the current row as a Java object.

      This method will return the value of the given column as a Java object. The type of the Java object will be the default Java Object type corresponding to the column's SQL type, following the mapping specified in the JDBC spec.

      This method may also be used to read datatabase specific abstract data types. JDBC 2.0 New behavior for getObject(). The behavior of method getObject() is extended to materialize data of SQL user-defined types. When the column @columnIndex is a structured or distinct value, the behavior of this method is as if it were a call to: getObject(columnIndex, this.getStatement().getConnection().getTypeMap()).

      Specified by:
      getObject in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      A java.lang.Object holding the column value.
      Throws:
      SQLException - thrown on failure.
    • getObject

      public final Object getObject(String columnName) throws SQLException

      Get the value of a column in the current row as a Java object.

      This method will return the value of the given column as a Java object. The type of the Java object will be the default Java Object type corresponding to the column's SQL type, following the mapping specified in the JDBC spec.

      This method may also be used to read datatabase specific abstract data types. JDBC 2.0 New behavior for getObject(). The behavior of method getObject() is extended to materialize data of SQL user-defined types. When the column @columnName is a structured or distinct value, the behavior of this method is as if it were a call to: getObject(columnName, this.getStatement().getConnection().getTypeMap()).

      Specified by:
      getObject in interface ResultSet
      Parameters:
      columnName - is the SQL name of the column
      Returns:
      A java.lang.Object holding the column value.
      Throws:
      SQLException - thrown on failure.
    • getObject

      public Object getObject(int columnIndex, Map<String,Class<?>> map) throws SQLException
      JDBC 2.0 Returns the value of column i as a Java object. Use the param map to determine the class from which to construct data of SQL structured and distinct types.
      Specified by:
      getObject in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      map - the mapping from SQL type names to Java classes
      Returns:
      an object representing the SQL value
      Throws:
      SQLException - Feature not implemented for now.
    • getObject

      public Object getObject(String colName, Map<String,Class<?>> map) throws SQLException
      JDBC 2.0 Returns the value of column i as a Java object. Use the param map to determine the class from which to construct data of SQL structured and distinct types.
      Specified by:
      getObject in interface ResultSet
      Parameters:
      colName - the column name
      map - the mapping from SQL type names to Java classes
      Returns:
      an object representing the SQL value
      Throws:
      SQLException - Feature not implemented for now.
    • findColumn

      public final int findColumn(String columnName) throws SQLException
      Map a Resultset column name to a ResultSet column index.
      Specified by:
      findColumn in interface ResultSet
      Parameters:
      columnName - the name of the column
      Returns:
      the column index
      Throws:
      SQLException - thrown on failure.
    • getStatement

      public final Statement getStatement() throws SQLException
      JDBC 2.0 Return the Statement that produced the ResultSet.
      Specified by:
      getStatement in interface ResultSet
      Returns:
      the Statment that produced the result set, or null if the result was produced some other way.
      Throws:
      SQLException - if a database error occurs or the result set is closed
    • setApplicationStatement

      public final void setApplicationStatement(Statement applicationStmt)
      Set the application Statement object that created this ResultSet. Used when the Statement objects returned to the application are wrapped for XA.
    • getRef

      public final Ref getRef(int i) throws SQLException
      JDBC 2.0 Get a REF(<structured-type>) column.
      Specified by:
      getRef in interface ResultSet
      Parameters:
      i - the first column is 1, the second is 2, ...
      Returns:
      an object representing data of an SQL REF type
      Throws:
      SQLException - Feature not implemented for now.
    • getArray

      public final Array getArray(int i) throws SQLException
      JDBC 2.0 Get an array column.
      Specified by:
      getArray in interface ResultSet
      Parameters:
      i - the first column is 1, the second is 2, ...
      Returns:
      an object representing an SQL array
      Throws:
      SQLException - Feature not implemented for now.
    • getRef

      public final Ref getRef(String colName) throws SQLException
      JDBC 2.0 Get a REF(<structured-type>) column.
      Specified by:
      getRef in interface ResultSet
      Parameters:
      colName - the column name
      Returns:
      an object representing data of an SQL REF type
      Throws:
      SQLException - Feature not implemented for now.
    • getArray

      public final Array getArray(String colName) throws SQLException
      JDBC 2.0 Get an array column.
      Specified by:
      getArray in interface ResultSet
      Parameters:
      colName - the column name
      Returns:
      an object representing an SQL array
      Throws:
      SQLException - Feature not implemented for now.
    • isBeforeFirst

      public boolean isBeforeFirst() throws SQLException
      JDBC 2.0

      Determine if the cursor is before the first row in the result set.

      Specified by:
      isBeforeFirst in interface ResultSet
      Returns:
      true if before the first row, false otherwise. Returns false when the result set contains no rows.
      Throws:
      SQLException - Thrown on error.
    • isAfterLast

      public boolean isAfterLast() throws SQLException
      JDBC 2.0

      Determine if the cursor is after the last row in the result set.

      Specified by:
      isAfterLast in interface ResultSet
      Returns:
      true if after the last row, false otherwise. Returns false when the result set contains no rows.
      Throws:
      SQLException - Thrown on error.
    • isFirst

      public boolean isFirst() throws SQLException
      JDBC 2.0

      Determine if the cursor is on the first row of the result set.

      Specified by:
      isFirst in interface ResultSet
      Returns:
      true if on the first row, false otherwise.
      Throws:
      SQLException - Thrown on error.
    • isLast

      public boolean isLast() throws SQLException
      JDBC 2.0

      Determine if the cursor is on the last row of the result set. Note: Calling isLast() may be expensive since the JDBC driver might need to fetch ahead one row in order to determine whether the current row is the last row in the result set.

      Specified by:
      isLast in interface ResultSet
      Returns:
      true if on the last row, false otherwise.
      Throws:
      SQLException - Thrown on error.
    • beforeFirst

      public void beforeFirst() throws SQLException
      JDBC 2.0

      Moves to the front of the result set, just before the first row. Has no effect if the result set contains no rows.

      Specified by:
      beforeFirst in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs, or result set type is TYPE_FORWARD_ONLY
    • afterLast

      public void afterLast() throws SQLException
      JDBC 2.0

      Moves to the end of the result set, just after the last row. Has no effect if the result set contains no rows.

      Specified by:
      afterLast in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs, or result set type is TYPE_FORWARD_ONLY.
    • first

      public boolean first() throws SQLException
      JDBC 2.0

      Moves to the first row in the result set.

      Specified by:
      first in interface ResultSet
      Returns:
      true if on a valid row, false if no rows in the result set.
      Throws:
      SQLException - if a database-access error occurs, or result set type is TYPE_FORWARD_ONLY.
    • last

      public boolean last() throws SQLException
      JDBC 2.0

      Moves to the last row in the result set.

      Specified by:
      last in interface ResultSet
      Returns:
      true if on a valid row, false if no rows in the result set.
      Throws:
      SQLException - if a database-access error occurs, or result set type is TYPE_FORWARD_ONLY.
    • getRow

      public int getRow() throws SQLException
      JDBC 2.0

      Determine the current row number. The first row is number 1, the second number 2, etc.

      Specified by:
      getRow in interface ResultSet
      Returns:
      the current row number, else return 0 if there is no current row
      Throws:
      SQLException - if a database-access error occurs.
    • absolute

      public boolean absolute(int row) throws SQLException
      JDBC 2.0

      Move to an absolute row number in the result set.

      If row is positive, moves to an absolute row with respect to the beginning of the result set. The first row is row 1, the second is row 2, etc.

      If row is negative, moves to an absolute row position with respect to the end of result set. For example, calling absolute(-1) positions the cursor on the last row, absolute(-2) indicates the next-to-last row, etc.

      An attempt to position the cursor beyond the first/last row in the result set, leaves the cursor before/after the first/last row, respectively.

      Note: Calling absolute(1) is the same as calling first(). Calling absolute(-1) is the same as calling last().

      Specified by:
      absolute in interface ResultSet
      Returns:
      true if on the result set, false if off.
      Throws:
      SQLException - if a database-access error occurs, or row is 0, or result set type is TYPE_FORWARD_ONLY.
    • relative

      public boolean relative(int row) throws SQLException
      JDBC 2.0

      Moves a relative number of rows, either positive or negative. Attempting to move beyond the first/last row in the result set positions the cursor before/after the the first/last row. Calling relative(0) is valid, but does not change the cursor position.

      Note: Calling relative(1) is different than calling next() since is makes sense to call next() when there is no current row, for example, when the cursor is positioned before the first row or after the last row of the result set.

      Specified by:
      relative in interface ResultSet
      Returns:
      true if on a row, false otherwise.
      Throws:
      SQLException - if a database-access error occurs, or there is no current row, or result set type is TYPE_FORWARD_ONLY.
    • previous

      public boolean previous() throws SQLException
      JDBC 2.0

      Moves to the previous row in the result set.

      Note: previous() is not the same as relative(-1) since it makes sense to call previous() when there is no current row.

      Specified by:
      previous in interface ResultSet
      Returns:
      true if on a valid row, false if off the result set.
      Throws:
      SQLException - if a database-access error occurs, or result set type is TYPE_FORWAR_DONLY.
    • setFetchDirection

      public void setFetchDirection(int direction) throws SQLException
      JDBC 2.0 Give a hint as to the direction in which the rows in this result set will be processed. The initial value is determined by the statement that produced the result set. The fetch direction may be changed at any time.
      Specified by:
      setFetchDirection in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs, or the result set type is TYPE_FORWARD_ONLY and direction is not FETCH_FORWARD.
    • getFetchDirection

      public int getFetchDirection() throws SQLException
      JDBC 2.0 Return the fetch direction for this result set.
      Specified by:
      getFetchDirection in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs
    • setFetchSize

      public void setFetchSize(int rows) throws SQLException
      JDBC 2.0 Give the JDBC driver a hint as to the number of rows that should be fetched from the database when more rows are needed for this result set. If the fetch size specified is zero, then the JDBC driver ignores the value, and is free to make its own best guess as to what the fetch size should be. The default value is set by the statement that creates the result set. The fetch size may be changed at any time.
      Specified by:
      setFetchSize in interface ResultSet
      Parameters:
      rows - the number of rows to fetch
      Throws:
      SQLException - if a database-access error occurs, or the condition 0 <= rows is not satisfied.
    • getFetchSize

      public int getFetchSize() throws SQLException
      JDBC 2.0 Return the fetch size for this result set.
      Specified by:
      getFetchSize in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs
    • getType

      public int getType() throws SQLException
      JDBC 2.0 Return the type of this result set. The type is determined based on the statement that created the result set.
      Specified by:
      getType in interface ResultSet
      Returns:
      TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, or TYPE_SCROLL_SENSITIVE
      Throws:
      SQLException - if a database-access error occurs
    • getConcurrency

      public int getConcurrency() throws SQLException
      JDBC 2.0 Return the concurrency of this result set. The concurrency is determined as follows If Statement object has CONCUR_READ_ONLY concurrency, then ResultSet object will also have the CONCUR_READ_ONLY concurrency. But if Statement object has CONCUR_UPDATABLE concurrency, then the concurrency of ResultSet object depends on whether the underlying language resultset is updatable or not. If the language resultset is updatable, then JDBC ResultSet object will also have the CONCUR_UPDATABLE concurrency. If lanugage resultset is not updatable, then JDBC ResultSet object concurrency will be set to CONCUR_READ_ONLY.
      Specified by:
      getConcurrency in interface ResultSet
      Returns:
      the concurrency type, CONCUR_READ_ONLY, etc.
      Throws:
      SQLException - if a database-access error occurs
    • rowUpdated

      public boolean rowUpdated() throws SQLException
      JDBC 2.0 Determine if the current row has been updated. The value returned depends on whether or not the result set can detect updates.
      Specified by:
      rowUpdated in interface ResultSet
      Returns:
      true if the row has been visibly updated by the owner or another, and updates are detected
      Throws:
      SQLException - if a database-access error occurs
      See Also:
    • rowInserted

      public boolean rowInserted() throws SQLException
      JDBC 2.0 Determine if the current row has been inserted. The value returned depends on whether or not the result set can detect visible inserts.
      Specified by:
      rowInserted in interface ResultSet
      Returns:
      true if inserted and inserts are detected
      Throws:
      SQLException - if a database-access error occurs
      See Also:
    • rowDeleted

      public boolean rowDeleted() throws SQLException
      JDBC 2.0 Determine if this row has been deleted. A deleted row may leave a visible "hole" in a result set. This method can be used to detect holes in a result set. The value returned depends on whether or not the result set can detect deletions.
      Specified by:
      rowDeleted in interface ResultSet
      Returns:
      true if deleted and deletes are detected
      Throws:
      SQLException - if a database-access error occurs
      See Also:
    • checksBeforeUpdateXXX

      protected void checksBeforeUpdateXXX(String methodName, int columnIndex) throws SQLException
      Throws:
      SQLException
    • checksBeforeUpdateOrDelete

      protected void checksBeforeUpdateOrDelete(String methodName, int columnIndex) throws SQLException
      Throws:
      SQLException
    • getDVDforColumnToBeUpdated

      protected DataValueDescriptor getDVDforColumnToBeUpdated(int columnIndex, String updateMethodName) throws StandardException, SQLException
      Throws:
      StandardException
      SQLException
    • checksBeforeInsert

      protected void checksBeforeInsert() throws SQLException
      Throws:
      SQLException
    • checksBeforeUpdateAsciiStream

      private void checksBeforeUpdateAsciiStream(int columnIndex) throws SQLException
      Check whether it is OK to update a column using updateAsciiStream().
      Parameters:
      columnIndex - the column index (first column is 1)
      Throws:
      SQLException - if the column could not be updated with updateAsciiStream()
    • checksBeforeUpdateBinaryStream

      private void checksBeforeUpdateBinaryStream(int columnIndex) throws SQLException
      Check whether it is OK to update a column using updateBinaryStream().
      Parameters:
      columnIndex - the column index (first column is 1)
      Throws:
      SQLException - if the column could not be updated with updateBinaryStream()
    • checksBeforeUpdateCharacterStream

      private void checksBeforeUpdateCharacterStream(int columnIndex) throws SQLException
      Check whether it is OK to update a column using updateCharacterStream().
      Parameters:
      columnIndex - the column index (first column is 1)
      Throws:
      SQLException - if the column could not be updated with updateCharacterStream()
    • updateNull

      public void updateNull(int columnIndex) throws SQLException
      JDBC 2.0 Give a nullable column a null value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateNull in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Throws:
      SQLException - if a database-access error occurs
    • updateBoolean

      public void updateBoolean(int columnIndex, boolean x) throws SQLException
      JDBC 2.0 Update a column with a boolean value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateBoolean in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateByte

      public void updateByte(int columnIndex, byte x) throws SQLException
      JDBC 2.0 Update a column with a byte value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateByte in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateShort

      public void updateShort(int columnIndex, short x) throws SQLException
      JDBC 2.0 Update a column with a short value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateShort in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateInt

      public void updateInt(int columnIndex, int x) throws SQLException
      JDBC 2.0 Update a column with an integer value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateInt in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateLong

      public void updateLong(int columnIndex, long x) throws SQLException
      JDBC 2.0 Update a column with a long value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateLong in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateFloat

      public void updateFloat(int columnIndex, float x) throws SQLException
      JDBC 2.0 Update a column with a float value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateFloat in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateDouble

      public void updateDouble(int columnIndex, double x) throws SQLException
      JDBC 2.0 Update a column with a Double value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateDouble in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateBigDecimal

      public void updateBigDecimal(int columnIndex, BigDecimal x) throws SQLException
      Specified by:
      updateBigDecimal in interface ResultSet
      Throws:
      SQLException
    • updateBigDecimal

      public void updateBigDecimal(String columnName, BigDecimal x) throws SQLException
      JDBC 2.0 Update a column with a BigDecimal value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateBigDecimal in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateString

      public void updateString(int columnIndex, String x) throws SQLException
      JDBC 2.0 Update a column with a String value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateString in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateBytes

      public void updateBytes(int columnIndex, byte[] x) throws SQLException
      JDBC 2.0 Update a column with a byte array value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateBytes in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateDate

      public void updateDate(int columnIndex, Date x) throws SQLException
      JDBC 2.0 Update a column with a Date value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateDate in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateTime

      public void updateTime(int columnIndex, Time x) throws SQLException
      JDBC 2.0 Update a column with a Time value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateTime in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateTimestamp

      public void updateTimestamp(int columnIndex, Timestamp x) throws SQLException
      JDBC 2.0 Update a column with a Timestamp value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateTimestamp in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateAsciiStream

      public void updateAsciiStream(int columnIndex, InputStream x, long length) throws SQLException
      Update a column with an ascii stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateAsciiStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      length - the length of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateAsciiStream

      public void updateAsciiStream(int columnIndex, InputStream x) throws SQLException
      Updates the designated column with a character stream value. The data will be read from the stream as needed until end-of-stream is reached. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateAsciiStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if the columnIndex is not valid; if a database access error occurs; the result set concurrency is CONCUR_READ_ONLY or this method is called on a closed result set
    • updateBinaryStream

      public void updateBinaryStream(int columnIndex, InputStream x, long length) throws SQLException
      Update a column with a binary stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateBinaryStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      length - the length of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateBinaryStream

      public void updateBinaryStream(int columnIndex, InputStream x) throws SQLException
      Updates the designated column with a binary stream value. The data will be read from the stream as needed until end-of-stream is reached. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateBinaryStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if the columnLabel is not valid; if a database access error occurs; the result set concurrency is CONCUR_READ_ONLY or this method is called on a closed result set
    • updateBinaryStreamInternal

      private void updateBinaryStreamInternal(int columnIndex, InputStream x, boolean lengthLess, long length, String updateMethodName) throws SQLException
      Set the given binary stream for the specified parameter. If lengthLess is true, the following conditions are either not checked or verified at the execution time of updateRow/insertRow:
      1. If the stream length is negative.
      2. If the stream's actual length equals the specified length.
      The lengthLess variable was added to differentiate between streams with invalid lengths and streams without known lengths.
      Parameters:
      columnIndex - the 1-based index of the parameter to set.
      x - the data.
      lengthLess - tells whether we know the length of the data or not.
      length - the length of the data. Ignored if lengthLess is true.
      updateMethodName - the name of the method calling us. Used in error messages.
      Throws:
      SQLException - if reading the data fails, or one of the data checks fails.
    • updateCharacterStream

      public void updateCharacterStream(int columnIndex, Reader x, long length) throws SQLException
      JDBC 4.0 Update a column with a character stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateCharacterStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      length - the length of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateCharacterStream

      public void updateCharacterStream(int columnIndex, Reader x) throws SQLException
      Updates the designated column with a character stream value. The data will be read from the stream as needed until end-of-stream is reached. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateCharacterStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if the columnIndex is not valid; if a database access error occurs; the result set concurrency is CONCUR_READ_ONLY or this method is called on a closed result set
    • updateCharacterStreamInternal

      private void updateCharacterStreamInternal(int columnIndex, Reader reader, boolean lengthLess, long length, String updateMethodName) throws SQLException
      Set the given character stream for the specified parameter. If lengthLess is true, the following conditions are either not checked or verified at the execution time of the prepared statement:
      1. If the stream length is negative.
      2. If the stream's actual length equals the specified length.
      The lengthLess variable was added to differentiate between streams with invalid lengths and streams without known lengths.
      Parameters:
      columnIndex - the 1-based index of the parameter to set.
      reader - the data.
      lengthLess - tells whether we know the length of the data or not.
      length - the length of the data. Ignored if lengthLess is true.
      Throws:
      SQLException - if reading the data fails, or one of the data checks fails.
    • updateObject

      public void updateObject(int columnIndex, Object x, int scale) throws SQLException
      JDBC 2.0 Update a column with an Object value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateObject in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      scale - For java.sql.Types.DECIMAL or java.sql.Types.NUMERIC types this is the number of digits after the decimal. For all other types this value will be ignored.
      Throws:
      SQLException - if a database-access error occurs
    • adjustScale

      protected void adjustScale(int columnIndex, int scale) throws SQLException

      Adjust the scale of a type.

      Throws:
      SQLException
    • updateObject

      public void updateObject(int columnIndex, Object x) throws SQLException
      JDBC 2.0 Update a column with an Object value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateObject in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateNull

      public void updateNull(String columnName) throws SQLException
      JDBC 2.0 Update a column with a null value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateNull in interface ResultSet
      Parameters:
      columnName - the name of the column
      Throws:
      SQLException - if a database-access error occurs
    • updateBoolean

      public void updateBoolean(String columnName, boolean x) throws SQLException
      JDBC 2.0 Update a column with a boolean value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateBoolean in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateByte

      public void updateByte(String columnName, byte x) throws SQLException
      JDBC 2.0 Update a column with a byte value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateByte in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateShort

      public void updateShort(String columnName, short x) throws SQLException
      JDBC 2.0 Update a column with a short value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateShort in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateInt

      public void updateInt(String columnName, int x) throws SQLException
      JDBC 2.0 Update a column with an integer value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateInt in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateLong

      public void updateLong(String columnName, long x) throws SQLException
      JDBC 2.0 Update a column with a long value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateLong in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateFloat

      public void updateFloat(String columnName, float x) throws SQLException
      JDBC 2.0 Update a column with a float value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateFloat in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateDouble

      public void updateDouble(String columnName, double x) throws SQLException
      JDBC 2.0 Update a column with a double value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateDouble in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateString

      public void updateString(String columnName, String x) throws SQLException
      JDBC 2.0 Update a column with a String value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateString in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateBytes

      public void updateBytes(String columnName, byte[] x) throws SQLException
      JDBC 2.0 Update a column with a byte array value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateBytes in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateDate

      public void updateDate(String columnName, Date x) throws SQLException
      JDBC 2.0 Update a column with a Date value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateDate in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateTime

      public void updateTime(String columnName, Time x) throws SQLException
      JDBC 2.0 Update a column with a Time value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateTime in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateTimestamp

      public void updateTimestamp(String columnName, Timestamp x) throws SQLException
      JDBC 2.0 Update a column with a Timestamp value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateTimestamp in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • updateAsciiStream

      public void updateAsciiStream(String columnName, InputStream x, int length) throws SQLException
      JDBC 2.0 Update a column with an ascii stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateAsciiStream in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      length - of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateBinaryStream

      public void updateBinaryStream(String columnName, InputStream x, int length) throws SQLException
      JDBC 2.0 Update a column with a binary stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateBinaryStream in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      length - of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateCharacterStream

      public void updateCharacterStream(String columnName, Reader reader, int length) throws SQLException
      JDBC 2.0 Update a column with a character stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateCharacterStream in interface ResultSet
      Parameters:
      columnName - the name of the column
      reader - the new column value
      length - length of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateObject

      public void updateObject(String columnName, Object x, int scale) throws SQLException
      JDBC 2.0 Update a column with an Object value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateObject in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      scale - For java.sql.Types.DECIMAL or java.sql.Types.NUMERIC types this is the number of digits after the decimal. For all other types this value will be ignored.
      Throws:
      SQLException - if a database-access error occurs
    • updateObject

      public void updateObject(String columnName, Object x) throws SQLException
      JDBC 2.0 Update a column with an Object value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateObject in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      Throws:
      SQLException - if a database-access error occurs
    • insertRow

      public void insertRow() throws SQLException
      JDBC 2.0 Insert the contents of the insert row into the result set and the database. Must be on the insert row when this method is called.
      Specified by:
      insertRow in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs, if called when not on the insert row, or if all non-nullable columns in the insert row have not been given a value
    • updateRow

      public void updateRow() throws SQLException
      JDBC 2.0 Update the underlying database with the new contents of the current row. Cannot be called when on the insert row.
      Specified by:
      updateRow in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs, or if called when on the insert row
    • deleteRow

      public void deleteRow() throws SQLException
      JDBC 2.0 Delete the current row from the result set and the underlying database. Cannot be called when on the insert row.
      Specified by:
      deleteRow in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs, or if called when on the insert row.
    • getFullBaseTableName

      private String getFullBaseTableName(ExecCursorTableReference targetTable)
    • refreshRow

      public void refreshRow() throws SQLException
      JDBC 2.0 Refresh the value of the current row with its current value in the database. Cannot be called when on the insert row. The refreshRow() method provides a way for an application to explicitly tell the JDBC driver to refetch a row(s) from the database. An application may want to call refreshRow() when caching or prefetching is being done by the JDBC driver to fetch the latest value of a row from the database. The JDBC driver may actually refresh multiple rows at once if the fetch size is greater than one. All values are refetched subject to the transaction isolation level and cursor sensitivity. If refreshRow() is called after calling updateXXX(), but before calling updateRow() then the updates made to the row are lost. Calling refreshRow() frequently will likely slow performance.
      Specified by:
      refreshRow in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs, or if called when on the insert row.
    • cancelRowUpdates

      public void cancelRowUpdates() throws SQLException
      JDBC 2.0 The cancelRowUpdates() method may be called after calling an updateXXX() method(s) and before calling updateRow() to rollback the updates made to a row. If no updates have been made or updateRow() has already been called, then this method has no effect.
      Specified by:
      cancelRowUpdates in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs, or if called when on the insert row.
    • moveToInsertRow

      public void moveToInsertRow() throws SQLException
      JDBC 2.0 Move to the insert row. The current cursor position is remembered while the cursor is positioned on the insert row. The insert row is a special row associated with an updatable result set. It is essentially a buffer where a new row may be constructed by calling the updateXXX() methods prior to inserting the row into the result set. Only the updateXXX(), getXXX(), and insertRow() methods may be called when the cursor is on the insert row. All of the columns in a result set must be given a value each time this method is called before calling insertRow(). UpdateXXX()must be called before getXXX() on a column.
      Specified by:
      moveToInsertRow in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs, or the result set is not updatable
    • moveToCurrentRow

      public void moveToCurrentRow() throws SQLException
      JDBC 2.0 Move the cursor to the remembered cursor position, usually the current row. Has no effect unless the cursor is on the insert row.
      Specified by:
      moveToCurrentRow in interface ResultSet
      Throws:
      SQLException - if a database-access error occurs, or the result set is not updatable
    • getBlob

      public Blob getBlob(int columnIndex) throws SQLException
      JDBC 2.0 Get a BLOB column.
      Specified by:
      getBlob in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      an object representing a BLOB
      Throws:
      SQLException
    • getClob

      public final Clob getClob(int columnIndex) throws SQLException
      JDBC 2.0 Get a CLOB column.
      Specified by:
      getClob in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      Returns:
      an object representing a CLOB
      Throws:
      SQLException
    • getBlob

      public final Blob getBlob(String columnName) throws SQLException
      JDBC 2.0 Get a BLOB column.
      Specified by:
      getBlob in interface ResultSet
      Parameters:
      columnName - the column name
      Returns:
      an object representing a BLOB
      Throws:
      SQLException
    • getClob

      public final Clob getClob(String columnName) throws SQLException
      JDBC 2.0 Get a CLOB column.
      Specified by:
      getClob in interface ResultSet
      Parameters:
      columnName - the column name
      Returns:
      an object representing a CLOB
      Throws:
      SQLException - Feature not implemented for now.
    • updateBlob

      public void updateBlob(int columnIndex, Blob x) throws SQLException
      JDBC 3.0 Updates the designated column with a java.sql.Blob value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateBlob in interface ResultSet
      Parameters:
      columnIndex - - the first column is 1, the second is 2
      x - - the new column value
      Throws:
      SQLException - Feature not implemented for now.
    • updateBlob

      public void updateBlob(String columnName, Blob x) throws SQLException
      JDBC 3.0 Updates the designated column with a java.sql.Blob value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateBlob in interface ResultSet
      Parameters:
      columnName - - the SQL name of the column
      x - - the new column value
      Throws:
      SQLException - Feature not implemented for now.
    • updateClob

      public void updateClob(int columnIndex, Clob x) throws SQLException
      JDBC 3.0 Updates the designated column with a java.sql.Clob value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateClob in interface ResultSet
      Parameters:
      columnIndex - - the first column is 1, the second is 2
      x - - the new column value
      Throws:
      SQLException - Feature not implemented for now.
    • updateClob

      public void updateClob(String columnName, Clob x) throws SQLException
      JDBC 3.0 Updates the designated column with a java.sql.Clob value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateClob in interface ResultSet
      Parameters:
      columnName - - the SQL name of the column
      x - - the new column value
      Throws:
      SQLException - Feature not implemented for now.
    • findColumnName

      protected int findColumnName(String columnName) throws SQLException
      Map a Resultset column name to a ResultSet column index.
      Parameters:
      columnName - the name of the column
      Returns:
      the column index
      Throws:
      SQLException - thrown on failure.
    • closeCurrentStream

      private final void closeCurrentStream()
      Documented behaviour for streams is that they are implicitly closed on the next get*() method call.
    • checkIfClosed

      final void checkIfClosed(String operation) throws SQLException
      Throw an exception if this ResultSet is closed.
      Parameters:
      operation - The operation the caller is trying to perform
      Throws:
      SQLException - Thrown if this ResultSet is closed.
    • checkExecIfClosed

      final void checkExecIfClosed(String operation) throws SQLException
      Throw an exception if this ResultSet is closed or its Connection has been closed. If the ResultSet has not been explictly closed but the Connection is closed, then this ResultSet will be marked as closed.
      Throws:
      SQLException
    • getSQLText

      protected String getSQLText()
      Try to see if we can fish the SQL Statement out of the local statement.
      Returns:
      null if we cannot figure out what SQL Statement is currently executing
    • getParameterValueSet

      protected ParameterValueSet getParameterValueSet()
      Try to see if we can fish the pvs out of the local statement.
      Returns:
      null if we cannot figure out what parameter value set is currently using
    • isMaxFieldSizeType

      private static boolean isMaxFieldSizeType(int colType)
    • closeOnTransactionError

      final SQLException closeOnTransactionError(Throwable thrownException) throws SQLException
      Throws:
      SQLException
    • getColumn

      protected final DataValueDescriptor getColumn(int columnIndex) throws SQLException, StandardException
      Get the column value for a getXXX() call. This method:
      • Closes the current stream (as per JDBC)
      • Throws a SQLException if the result set is closed
      • Throws a SQLException if the ResultSet is not on a row
      • Throws a SQLException if the columnIndex is out of range
      • Returns the DataValueDescriptor for the column.
      Throws:
      SQLException
      StandardException
    • noStateChangeException

      static final SQLException noStateChangeException(Throwable thrownException)
      An exception on many method calls to JDBC objects does not change the state of the transaction or statement, or even the underlying object. This method simply wraps the excecption in a SQLException. Examples are:
      • getXXX() calls on ResultSet - ResultSet is not closed.
      • setXXX() calls on PreparedStatement - ResultSet is not closed.
      In addition these exceptions must not call higher level objects to be closed (e.g. when executing a server side Java procedure). See bug 4397
    • setDynamicResultSet

      void setDynamicResultSet(EmbedStatement owningStmt)
      A dynamic result was created in a procedure by a nested connection. Once the procedure returns, there is a good chance that connection is closed, so we re-attach the result set to the connection of the statement the called the procedure, which will be still open.
      In the case where the dynamic result will not be accessible then owningStmt will be null, the ResultSet will be linked to the root connection to allow its close method to work. It will remain attached to its original statement.
    • compareTo

      public final int compareTo(Object other)
      Specified by:
      compareTo in interface Comparable
    • checkScrollCursor

      private void checkScrollCursor(String methodName) throws SQLException
      Checks if the result set has a scrollable cursor.
      Parameters:
      methodName - name of the method which requests the check
      Throws:
      SQLException - if the result set is closed or its type is TYPE_FORWARD_ONLY
    • checkUpdatableCursor

      private void checkUpdatableCursor(String operation) throws SQLException
      Throws:
      SQLException
    • checkRowPosition

      private boolean checkRowPosition(int position, String positionText) throws SQLException
      Throws:
      SQLException
    • isForUpdate

      public final boolean isForUpdate()
      * Is this result set from a select for update statement?
      Specified by:
      isForUpdate in interface EngineResultSet
    • getColumnSQLType

      final String getColumnSQLType(int column)
    • getMaxColumnWidth

      private final int getMaxColumnWidth(int columnIndex)
      Return the user-defined maximum size of the column. Note that this may be different from the maximum column size Derby is able, or allowed, to handle (called 'maximum maximum length').
      Parameters:
      columnIndex - the 1-based index of the column
      Returns:
      the maximum length of the column
    • dataTypeConversion

      private final SQLException dataTypeConversion(String targetType, int column)
    • dataTypeConversion

      private final SQLException dataTypeConversion(int column, String targetType)
    • useStreamOrLOB

      final void useStreamOrLOB(int columnIndex) throws SQLException
      Mark a column as already having a stream or LOB accessed from it. If the column was already accessed, throw an exception.
      Parameters:
      columnIndex - 1-based column index
      Throws:
      SQLException - if the column has already been accessed
    • checkLOBMultiCall

      private void checkLOBMultiCall(int columnIndex) throws SQLException
      Checks if a stream or a LOB object has already been created for the specified LOB column.

      Accessing a LOB column more than once is not forbidden by the JDBC specification, but the Java API states that for maximum portability, result set columns within each row should be read in left-to-right order, and each column should be read only once. The restriction was implemented in Derby due to complexities with the positioning of store streams when the user was given multiple handles to the stream.

      Parameters:
      columnIndex - 1-based index of the LOB column
      Throws:
      SQLException - if the column has already been accessed
    • isClosed

      public final boolean isClosed() throws SQLException
      JDBC 4.0

      Checks whether this ResultSet object has been closed, either automatically or because close() has been called.

      Specified by:
      isClosed in interface ResultSet
      Returns:
      true if the ResultSet is closed, false otherwise
      Throws:
      SQLException - if a database error occurs
    • addWarning

      private void addWarning(SQLWarning w)
      Adds a warning to the end of the warning chain.
      Parameters:
      w - The warning to add to the warning chain.
    • updateAsciiStream

      public void updateAsciiStream(int columnIndex, InputStream x, int length) throws SQLException
      JDBC 2.0 Update a column with an ascii stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateAsciiStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      length - the length of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateBinaryStream

      public void updateBinaryStream(int columnIndex, InputStream x, int length) throws SQLException
      JDBC 2.0 Update a column with a binary stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateBinaryStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      length - the length of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateCharacterStream

      public void updateCharacterStream(int columnIndex, Reader x, int length) throws SQLException
      JDBC 2.0 Update a column with a character stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateCharacterStream in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - the new column value
      length - the length of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateAsciiStream

      public void updateAsciiStream(String columnName, InputStream x, long length) throws SQLException
      JDBC 4.0 Update a column with an ascii stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateAsciiStream in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      length - of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateAsciiStream

      public void updateAsciiStream(String columnName, InputStream x) throws SQLException
      Updates the designated column with a character stream value. The data will be read from the stream as needed until end-of-stream is reached. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateAsciiStream in interface ResultSet
      Parameters:
      columnName - the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column
      x - the new column value
      Throws:
      SQLException - if the columnIndex is not valid; if a database access error occurs; the result set concurrency is CONCUR_READ_ONLY or this method is called on a closed result set
    • updateBinaryStream

      public void updateBinaryStream(String columnName, InputStream x, long length) throws SQLException
      JDBC 4.0 Update a column with a binary stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateBinaryStream in interface ResultSet
      Parameters:
      columnName - the name of the column
      x - the new column value
      length - of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateBinaryStream

      public void updateBinaryStream(String columnName, InputStream x) throws SQLException
      Updates the designated column with a binary stream value. The data will be read from the stream as needed until end-of-stream is reached. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateBinaryStream in interface ResultSet
      Parameters:
      columnName - the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column
      x - the new column value
      Throws:
      SQLException - if the columnLabel is not valid; if a database access error occurs; the result set concurrency is CONCUR_READ_ONLY or this method is called on a closed result set
    • updateCharacterStream

      public void updateCharacterStream(String columnName, Reader reader, long length) throws SQLException
      JDBC 4.0 Update a column with a character stream value. The updateXXX() methods are used to update column values in the current row, or the insert row. The updateXXX() methods do not update the underlying database, instead the updateRow() or insertRow() methods are called to update the database.
      Specified by:
      updateCharacterStream in interface ResultSet
      Parameters:
      columnName - the name of the column
      reader - the new column value
      length - length of the stream
      Throws:
      SQLException - if a database-access error occurs
    • updateCharacterStream

      public void updateCharacterStream(String columnName, Reader reader) throws SQLException
      Updates the designated column with a character stream value. The data will be read from the stream as needed until end-of-stream is reached. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateCharacterStream in interface ResultSet
      Parameters:
      columnName - the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column
      reader - the new column value
      Throws:
      SQLException - if the columnIndex is not valid; if a database access error occurs; the result set concurrency is CONCUR_READ_ONLY or this method is called on a closed result set
    • updateBlob

      public void updateBlob(int columnIndex, InputStream x, long length) throws SQLException
      JDBC 4.0 Updates the designated column with a java.sql.Blob value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateBlob in interface ResultSet
      Parameters:
      columnIndex - - the first column is 1, the second is 2
      x - - the new column value
      length - - the length of the Blob datatype
      Throws:
      SQLException
    • updateBlob

      public void updateBlob(int columnIndex, InputStream x) throws SQLException
      Updates the designated column using the given input stream. The data will be read from the stream as needed until end-of-stream is reached. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateBlob in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - an object that contains the data to set the parameter value to.
      Throws:
      SQLException - if the columnIndex is not valid; if a database access error occurs; the result set concurrency is CONCUR_READ_ONLY or this method is called on a closed result set
    • updateBlob

      public void updateBlob(String columnName, InputStream x, long length) throws SQLException
      JDBC 4.0 Updates the designated column with a java.sql.Blob value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateBlob in interface ResultSet
      Parameters:
      columnName - - the name of the column to be updated
      x - - the new column value
      length - - the length of the Blob datatype
      Throws:
      SQLException
    • updateBlob

      public void updateBlob(String columnName, InputStream x) throws SQLException
      Updates the designated column using the given input stream. The data will be read from the stream as needed until end-of-stream is reached. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateBlob in interface ResultSet
      Parameters:
      columnName - the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column
      x - an object that contains the data to set the parameter value to.
      Throws:
      SQLException - if the columnIndex is not valid; if a database access error occurs; the result set concurrency is CONCUR_READ_ONLY or this method is called on a closed result set
    • updateClob

      public void updateClob(int columnIndex, Reader x, long length) throws SQLException
      JDBC 4.0 Updates the designated column with a java.sql.Clob value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateClob in interface ResultSet
      Parameters:
      columnIndex - - the first column is 1, the second is 2
      x - - the new column value
      Throws:
      SQLException - Feature not implemented for now.
    • updateClob

      public void updateClob(int columnIndex, Reader x) throws SQLException
      Updates the designated column using the given Reader object. The data will be read from the stream as needed until end-of-stream is reached. The JDBC driver will do any necessary conversion from UNICODE to the database char format. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateClob in interface ResultSet
      Parameters:
      columnIndex - the first column is 1, the second is 2, ...
      x - an object that contains the data to set the parameter value to
      Throws:
      SQLException - if the columnIndex is not valid; if a database access error occurs; the result set concurrency is CONCUR_READ_ONLY or this method is called on a closed result set
    • updateClob

      public void updateClob(String columnName, Reader x, long length) throws SQLException
      JDBC 4.0 Updates the designated column with a java.sql.Clob value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateClob in interface ResultSet
      Parameters:
      columnName - - the name of the Clob column
      x - - the new column value
      Throws:
      SQLException - Feature not implemented for now.
    • updateClob

      public void updateClob(String columnName, Reader x) throws SQLException
      Updates the designated column using the given Reader object. The data will be read from the stream as needed until end-of-stream is reached. The JDBC driver will do any necessary conversion from UNICODE to the database char format. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateClob in interface ResultSet
      Parameters:
      columnName - the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column
      x - an object that contains the data to set the parameter value to
      Throws:
      SQLException - if the columnIndex is not valid; if a database access error occurs; the result set concurrency is CONCUR_READ_ONLY or this method is called on a closed result set
    • updateRef

      public void updateRef(int columnIndex, Ref x) throws SQLException
      JDBC 3.0 Updates the designated column with a java.sql.Ref value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateRef in interface ResultSet
      Parameters:
      columnIndex - - the first column is 1, the second is 2
      x - - the new column value
      Throws:
      SQLException - Feature not implemented for now.
    • updateRef

      public void updateRef(String columnName, Ref x) throws SQLException
      JDBC 3.0 Updates the designated column with a java.sql.Ref value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateRef in interface ResultSet
      Parameters:
      columnName - - the SQL name of the column
      x - - the new column value
      Throws:
      SQLException - Feature not implemented for now.
    • updateArray

      public void updateArray(int columnIndex, Array x) throws SQLException
      JDBC 3.0 Updates the designated column with a java.sql.Array value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateArray in interface ResultSet
      Parameters:
      columnIndex - - the first column is 1, the second is 2
      x - - the new column value
      Throws:
      SQLException - Feature not implemented for now.
    • updateArray

      public void updateArray(String columnName, Array x) throws SQLException
      JDBC 3.0 Updates the designated column with a java.sql.Array value. The updater methods are used to update column values in the current row or the insert row. The updater methods do not update the underlying database; instead the updateRow or insertRow methods are called to update the database.
      Specified by:
      updateArray in interface ResultSet
      Parameters:
      columnName - - the SQL name of the column
      x - - the new column value
      Throws:
      SQLException - Feature not implemented for now.
    • getRowId

      public RowId getRowId(int columnIndex) throws SQLException
      Specified by:
      getRowId in interface ResultSet
      Throws:
      SQLException
    • getRowId

      public RowId getRowId(String columnName) throws SQLException
      Specified by:
      getRowId in interface ResultSet
      Throws:
      SQLException
    • updateNCharacterStream

      public void updateNCharacterStream(int columnIndex, Reader x) throws SQLException
      Specified by:
      updateNCharacterStream in interface ResultSet
      Throws:
      SQLException
    • updateNCharacterStream

      public void updateNCharacterStream(int columnIndex, Reader x, long length) throws SQLException
      Specified by:
      updateNCharacterStream in interface ResultSet
      Throws:
      SQLException
    • updateNCharacterStream

      public void updateNCharacterStream(String columnName, Reader x) throws SQLException
      Specified by:
      updateNCharacterStream in interface ResultSet
      Throws:
      SQLException
    • updateNCharacterStream

      public void updateNCharacterStream(String columnName, Reader x, long length) throws SQLException
      Specified by:
      updateNCharacterStream in interface ResultSet
      Throws:
      SQLException
    • updateNString

      public void updateNString(int columnIndex, String nString) throws SQLException
      Specified by:
      updateNString in interface ResultSet
      Throws:
      SQLException
    • updateNString

      public void updateNString(String columnName, String nString) throws SQLException
      Specified by:
      updateNString in interface ResultSet
      Throws:
      SQLException
    • updateNClob

      public void updateNClob(int columnIndex, NClob nClob) throws SQLException
      Specified by:
      updateNClob in interface ResultSet
      Throws:
      SQLException
    • updateNClob

      public void updateNClob(int columnIndex, Reader reader) throws SQLException
      Specified by:
      updateNClob in interface ResultSet
      Throws:
      SQLException
    • updateNClob

      public void updateNClob(String columnName, NClob nClob) throws SQLException
      Specified by:
      updateNClob in interface ResultSet
      Throws:
      SQLException
    • updateNClob

      public void updateNClob(String columnName, Reader reader) throws SQLException
      Specified by:
      updateNClob in interface ResultSet
      Throws:
      SQLException
    • getNCharacterStream

      public Reader getNCharacterStream(int columnIndex) throws SQLException
      Specified by:
      getNCharacterStream in interface ResultSet
      Throws:
      SQLException
    • getNCharacterStream

      public Reader getNCharacterStream(String columnName) throws SQLException
      Specified by:
      getNCharacterStream in interface ResultSet
      Throws:
      SQLException
    • getNClob

      public NClob getNClob(int i) throws SQLException
      Specified by:
      getNClob in interface ResultSet
      Throws:
      SQLException
    • getNClob

      public NClob getNClob(String colName) throws SQLException
      Specified by:
      getNClob in interface ResultSet
      Throws:
      SQLException
    • getNString

      public String getNString(int columnIndex) throws SQLException
      Specified by:
      getNString in interface ResultSet
      Throws:
      SQLException
    • getNString

      public String getNString(String columnName) throws SQLException
      Specified by:
      getNString in interface ResultSet
      Throws:
      SQLException
    • updateRowId

      public void updateRowId(int columnIndex, RowId x) throws SQLException
      Specified by:
      updateRowId in interface ResultSet
      Throws:
      SQLException
    • updateRowId

      public void updateRowId(String columnName, RowId x) throws SQLException
      Specified by:
      updateRowId in interface ResultSet
      Throws:
      SQLException
    • getSQLXML

      public SQLXML getSQLXML(int columnIndex) throws SQLException
      Specified by:
      getSQLXML in interface ResultSet
      Throws:
      SQLException
    • getSQLXML

      public SQLXML getSQLXML(String colName) throws SQLException
      Specified by:
      getSQLXML in interface ResultSet
      Throws:
      SQLException
    • updateSQLXML

      public void updateSQLXML(int columnIndex, SQLXML xmlObject) throws SQLException
      Specified by:
      updateSQLXML in interface ResultSet
      Throws:
      SQLException
    • updateSQLXML

      public void updateSQLXML(String columnName, SQLXML xmlObject) throws SQLException
      Specified by:
      updateSQLXML in interface ResultSet
      Throws:
      SQLException
    • isWrapperFor

      public boolean isWrapperFor(Class<?> interfaces) throws SQLException
      Returns false unless interfaces is implemented
      Specified by:
      isWrapperFor in interface Wrapper
      Parameters:
      interfaces - a Class defining an interface.
      Returns:
      true if this implements the interface or directly or indirectly wraps an object that does.
      Throws:
      SQLException - if an error occurs while determining whether this is a wrapper for an object with the given interface.
    • unwrap

      public <T> T unwrap(Class<T> interfaces) throws SQLException
      Returns this if this class implements the interface
      Specified by:
      unwrap in interface Wrapper
      Parameters:
      interfaces - a Class defining an interface
      Returns:
      an object that implements the interface
      Throws:
      SQLException - if no object if found that implements the interface
    • updateNClob

      public void updateNClob(int columnIndex, Reader x, long length) throws SQLException
      Updates the designated column using the given Reader object, which is the given number of characters long.
      Specified by:
      updateNClob in interface ResultSet
      Parameters:
      columnIndex - - the first column is 1, the second is 2
      x - - the new column value
      length - - the length of the stream
      Throws:
      SQLException - Feature not implemented for now.
    • updateNClob

      public void updateNClob(String columnName, Reader x, long length) throws SQLException
      Updates the designated column using the given Reader object, which is the given number of characters long.
      Specified by:
      updateNClob in interface ResultSet
      Parameters:
      columnName - - the Name of the column to be updated
      x - - the new column value
      length - - the length of the stream
      Throws:
      SQLException - Feature not implemented for now.
    • getObject

      public <T> T getObject(int columnIndex, Class<T> type) throws SQLException
      Retrieve the column as an object of the desired type.
      Specified by:
      getObject in interface ResultSet
      Throws:
      SQLException
    • mismatchException

      private SQLException mismatchException(String targetTypeName, int columnIndex) throws SQLException
      Throws:
      SQLException
    • getObject

      public <T> T getObject(String columnName, Class<T> type) throws SQLException
      Specified by:
      getObject in interface ResultSet
      Throws:
      SQLException
    • isNull

      public boolean isNull(int columnIndex) throws SQLException
      Description copied from interface: EngineResultSet
      Is the designated columnIndex a null data value? This is used by EXTDTAInputStream to get the null value without retrieving the underlying data value.
      Specified by:
      isNull in interface EngineResultSet
      Parameters:
      columnIndex -
      Returns:
      true if the data value at columnIndex for the current row is null
      Throws:
      SQLException
    • getLength

      public int getLength(int columnIndex) throws SQLException
      Description copied from interface: EngineResultSet
      Return the length of the designated columnIndex data value. Implementation is type dependent.
      Specified by:
      getLength in interface EngineResultSet
      Parameters:
      columnIndex - column to access
      Returns:
      length of data value
      Throws:
      SQLException
      See Also: