com.ibm.as400.access

Class AS400JDBCStatement

  • java.lang.Object
    • com.ibm.as400.access.AS400JDBCStatement
  • All Implemented Interfaces:
    java.sql.Statement, java.sql.Wrapper
    Direct Known Subclasses:
    AS400JDBCPreparedStatement, AS400JDBCStatementRedirect


    public class AS400JDBCStatement
    extends java.lang.Object
    implements java.sql.Statement

    The AS400JDBCStatement class provides a mechanism for executing static SQL statements. Use Connection.createStatement() to create new Statement objects.

    Only one result set per statement can be open at any point in time. Therefore, if an application needs to read from multiple result sets, then each must be generated by a different statement.

    AS400JDBCStatements are thread-safe.

    Note that the connection keeps a reference to each statement that it creates. This means that statements will not get garbage collected until the connection gets garbage collected. It is best to explicitly close statements rather than counting on garbage collection.

    • Field Summary

      Fields 
      Modifier and Type Field and Description
      protected com.ibm.as400.access.DBExtendedColumnDescriptors extendedColumnDescriptors_ 
      • Fields inherited from interface java.sql.Statement

        CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, SUCCESS_NO_INFO
    • Constructor Summary

      Constructors 
      Modifier Constructor and Description
      protected AS400JDBCStatement() 
    • Method Summary

      Methods 
      Modifier and Type Method and Description
      void addBatch(java.lang.String sql)
      Adds an SQL statement to the current batch of SQL statements.
      void cancel()
      Cancels the statement.
      void clearBatch()
      Clears the current batch of SQL statements.
      void clearWarnings()
      Clears all warnings that have been reported for the statement.
      void close()
      Releases the statement's resources immediately instead of waiting for them to be automatically released.
      void closeOnCompletion()
      Specifies that this Statement will be closed when all its dependent result sets are closed.
      protected void endCancelThread()
      endTheCancelThread
      boolean execute(java.lang.String sql)
      Runs an SQL statement that may return multiple result sets.
      boolean execute(java.lang.String sql, int autoGeneratedKeys)
      Runs an SQL statement that may return multiple result sets and makes any auto-generated keys available for retrieval using Statement.getGeneratedKeys().
      boolean execute(java.lang.String sql, int[] columnIndexes)
      Runs an SQL statement that may return multiple result sets and makes any auto-generated keys for the columns indicated in the given array available for retrieval using Statement.getGeneratedKeys().
      boolean execute(java.lang.String sql, java.lang.String[] columnNames)
      Runs an SQL statement that may return multiple result sets and makes any auto-generated keys for the columns indicated in the given array available for retrieval using Statement.getGeneratedKeys().
      int[] executeBatch()
      Runs the batch of SQL statements.
      long[] executeLargeBatch()
      Submits a batch of commands to the database for execution and if all commands execute successfully, returns an array of update counts.
      long executeLargeUpdate(java.lang.String sql)
      Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.
      long executeLargeUpdate(java.lang.String sql, int autoGeneratedKeys)
      Executes the given SQL statement and signals the driver with the given flag about whether the auto-generated keys produced by this Statement object should be made available for retrieval.
      long executeLargeUpdate(java.lang.String sql, int[] columnIndexes)
      Executes the given SQL statement and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval.
      long executeLargeUpdate(java.lang.String sql, java.lang.String[] columnNames)
      Executes the given SQL statement and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval.
      java.sql.ResultSet executeQuery(java.lang.String sql)
      Runs an SQL statement that returns a single result set.
      int executeUpdate(java.lang.String sql)
      Runs an SQL INSERT, UPDATE, or DELETE statement, or any SQL statement that does not return a result set.
      int executeUpdate(java.lang.String sql, int autoGeneratedKeys)
      Runs an SQL INSERT, UPDATE, or DELETE statement, or any SQL statement that does not return a result set and makes any auto-generated keys available for retrieval using Statement.getGeneratedKeys().
      int executeUpdate(java.lang.String sql, int[] columnIndexes)
      Runs an SQL INSERT, UPDATE, or DELETE statement, or any SQL statement that does not return a result set and makes any auto-generated keys for the columns indicated in the given array available for retrieval using Statement.getGeneratedKeys().
      int executeUpdate(java.lang.String sql, java.lang.String[] columnNames)
      Runs an SQL INSERT, UPDATE, or DELETE statement, or any SQL statement that does not return a result set and makes any auto-generated keys for the columns indicated in the given array available for retrieval using Statement.getGeneratedKeys().
      protected void finalize()
      Closes the statement if not explicitly closed by the caller.
      java.sql.Connection getConnection()
      Returns the connection for this statement.
      int getFetchDirection()
      Returns the fetch direction.
      int getFetchSize()
      Returns the fetch size.
      java.sql.ResultSet getGeneratedKeys()
      Retrieves any auto-generated keys created as a result of executing this Statement object.
      long getLargeMaxRows()
      Retrieves the maximum number of rows that a ResultSet object produced by this Statement object can contain.
      long getLargeUpdateCount()
      Retrieves the current result as an update count; if the result is a ResultSet object or there are no more results, -1 is returned.
      int getMaxFieldSize()
      Returns the maximum field size limit for the statement.
      int getMaxRows()
      Returns the maximum rows limit for the statement.
      boolean getMoreResults()
      Returns the next result set.
      boolean getMoreResults(int current)
      Returns the next result set.
      int getPositionOfSyntaxError()
      Will return the value of the last syntax error that came back from the IBM i system.
      int getQueryTimeout()
      Returns the query timeout limit for this statement.
      java.sql.ResultSet getResultSet()
      Returns the current result set.
      int getResultSetConcurrency()
      Returns the result set concurrency to be used for this statement.
      int getResultSetHoldability()
      Returns the result set cursor holdability to be used for this statement.
      int getResultSetType()
      Returns the result set type to be used for this statement.
      int getUpdateCount()
      Returns the current update count.
      protected java.lang.String[] getValidWrappedList() 
      java.sql.SQLWarning getWarnings()
      Returns the first warning reported for the statement.
      boolean isClosed()
      Indicates if the statement is closed.
      boolean isCloseOnCompletion()
      Returns a value indicating whether this Statement will be closed when all its dependent result sets are closed.
      boolean isPoolable()
      Returns the value of the statements poolable hint, indicating whether pooling of the statement is requested.
      void setCursorName(java.lang.String cursorName)
      Sets the SQL cursor name that will be used by the statement.
      void setEscapeProcessing(boolean escapeProcessing)
      Sets the escape processing mode.
      void setFetchDirection(int fetchDirection)
      Sets the direction in which the rows in a result set will be processed.
      void setFetchSize(int fetchSize)
      Sets the number of rows to be fetched from the database when more rows are needed.
      void setLargeMaxRows(long max)
      Sets the limit for the maximum number of rows that any ResultSet object generated by this Statement object can contain to the given number.
      void setMaxFieldSize(int maxFieldSize)
      Sets the maximum field size limit.
      void setMaxRows(int maxRows)
      Sets the maximum rows limit.
      void setPoolable(boolean poolable)
      Requests that a Statement be pooled or not pooled.
      void setQueryTimeout(int queryTimeout)
      Sets the query timeout limit.
      protected void startCancelThread()
      Handles the work involved in supporting a setQueryTimeout option with the cancel property set. .
      java.lang.String toString()
      Returns the statement name.
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.sql.Wrapper

        isWrapperFor, unwrap
    • Field Detail

      • extendedColumnDescriptors_

        protected com.ibm.as400.access.DBExtendedColumnDescriptors extendedColumnDescriptors_
    • Constructor Detail

      • AS400JDBCStatement

        protected AS400JDBCStatement()
    >
    • Method Detail

      • addBatch

        public void addBatch(java.lang.String sql)
                      throws java.sql.SQLException
        Adds an SQL statement to the current batch of SQL statements.
        Specified by:
        addBatch in interface java.sql.Statement
        Parameters:
        sql - The SQL statement to be added to the current batch. This can be any SQL statement that does not return a result set.
        Throws:
        java.sql.SQLException - If the statement is not open or the SQL statement contains a syntax error.
      • cancel

        public void cancel()
                    throws java.sql.SQLException
        Cancels the statement. This is useful when one thread needs to cancel a statement that is being executed by another thread. This will close the current result set.
        Specified by:
        cancel in interface java.sql.Statement
        Throws:
        java.sql.SQLException - If the statement is not open or an error occurs.
      • clearBatch

        public void clearBatch()
                        throws java.sql.SQLException
        Clears the current batch of SQL statements.
        Specified by:
        clearBatch in interface java.sql.Statement
        Throws:
        java.sql.SQLException - If the statement is not open.
      • clearWarnings

        public void clearWarnings()
                           throws java.sql.SQLException
        Clears all warnings that have been reported for the statement. After this call, getWarnings() returns null until a new warning is reported for the statement.
        Specified by:
        clearWarnings in interface java.sql.Statement
        Throws:
        java.sql.SQLException - If an error occurs.
      • close

        public void close()
                   throws java.sql.SQLException
        Releases the statement's resources immediately instead of waiting for them to be automatically released. This closes the current result set.
        Specified by:
        close in interface java.sql.Statement
        Throws:
        java.sql.SQLException - If an error occurs.
      • execute

        public boolean execute(java.lang.String sql)
                        throws java.sql.SQLException
        Runs an SQL statement that may return multiple result sets. This closes the current result set and clears warnings before executing the new SQL statement.

        Under some situations, a single SQL statement may return multiple result sets, an update count, or both. This might occur when executing a stored procedure that returns multiple result sets or when dynamically executing an unknown SQL string.

        Use getMoreResults(), getResultSet(), and getUpdateCount() to navigate through multiple result sets, an update count, or both.

        Specified by:
        execute in interface java.sql.Statement
        Parameters:
        sql - The SQL statement.
        Returns:
        true if a result set was returned, false if an update count was returned or nothing was returned.
        Throws:
        java.sql.SQLException - If the statement is not open, the SQL statement contains a syntax error, the query timeout limit is exceeded, or an error occurs.
      • execute

        public boolean execute(java.lang.String sql,
                      int autoGeneratedKeys)
                        throws java.sql.SQLException
        Runs an SQL statement that may return multiple result sets and makes any auto-generated keys available for retrieval using Statement.getGeneratedKeys(). This closes the current result set and clears warnings before executing the new SQL statement.

        Under some situations, a single SQL statement may return multiple result sets, an update count, or both. This might occur when executing a stored procedure that returns multiple result sets or when dynamically executing an unknown SQL string.

        Use getMoreResults(), getResultSet(), and getUpdateCount() to navigate through multiple result sets, an update count, or both.

        This method requires OS/400 V5R2 or IBM i. If connecting to OS/400 V5R1 or earlier, an exception will be thrown.

        Specified by:
        execute in interface java.sql.Statement
        Parameters:
        sql - The SQL statement.
        autoGeneratedKeys - Indicates whether auto-generated keys should be made available for retrieval. Valid values are Statement.RETURN_GENERATED_KEYS and Statement.NO_GENERATED_KEYS.
        Returns:
        true if a result set was returned, false if an update count was returned or nothing was returned.
        Throws:
        java.sql.SQLException - If the statement is not open, the SQL statement contains a syntax error, the query timeout limit is exceeded, the value for autoGeneratedKeys is not a valid value, if connecting to OS/400 V5R1 or earlier, an error occurs.
        Since:
        Modification 5
      • execute

        public boolean execute(java.lang.String sql,
                      int[] columnIndexes)
                        throws java.sql.SQLException
        Runs an SQL statement that may return multiple result sets and makes any auto-generated keys for the columns indicated in the given array available for retrieval using Statement.getGeneratedKeys(). This closes the current result set and clears warnings before executing the new SQL statement.

        Under some situations, a single SQL statement may return multiple result sets, an update count, or both. This might occur when executing a stored procedure that returns multiple result sets or when dynamically executing an unknown SQL string.

        Use getMoreResults(), getResultSet(), and getUpdateCount() to navigate through multiple result sets, an update count, or both.

        This method is not supported when connecting to IBM i V5R4 or earlier systems.

        Specified by:
        execute in interface java.sql.Statement
        Parameters:
        sql - The SQL statement.
        columnIndexes - Indicates that auto-generated keys for the indicated columns should be made available for retrieval.
        Returns:
        true if a result set was returned, false if an update count was returned or nothing was returned.
        Throws:
        java.sql.SQLException - - If connecting to IBM i V5R4 or earlier systems, if the statement is not open, the SQL statement contains a syntax error, the query timeout limit is exceeded, the value for columnIndexes is not a valid value, or an error occurs.
        Since:
        Modification 5
      • execute

        public boolean execute(java.lang.String sql,
                      java.lang.String[] columnNames)
                        throws java.sql.SQLException
        Runs an SQL statement that may return multiple result sets and makes any auto-generated keys for the columns indicated in the given array available for retrieval using Statement.getGeneratedKeys(). This closes the current result set and clears warnings before executing the new SQL statement.

        Under some situations, a single SQL statement may return multiple result sets, an update count, or both. This might occur when executing a stored procedure that returns multiple result sets or when dynamically executing an unknown SQL string.

        Use getMoreResults(), getResultSet(), and getUpdateCount() to navigate through multiple result sets, an update count, or both.

        This method is not supported when connecting to IBM i V5R4 or earlier systems.

        Specified by:
        execute in interface java.sql.Statement
        Parameters:
        sql - The SQL statement.
        columnNames - Indicates that auto-generated keys for the indicated columns should be made available for retrieval.
        Returns:
        true if a result set was returned, false if an update count was returned or nothing was returned.
        Throws:
        java.sql.SQLException - - If connecting to IBM i V5R4 or earlier systems, if the statement is not open, the SQL statement contains a syntax error, the query timeout limit is exceeded, the value for columnNames is not a valid value, or an error occurs.
        Since:
        Modification 5
      • executeBatch

        public int[] executeBatch()
                           throws java.sql.SQLException
        Runs the batch of SQL statements. Batch updates can be used to submit a set of SQL statements together as a single unit. The SQL statements are run in the order in which they were added to the batch. The batch is cleared after the SQL statements are run. In addition, this closes the current result set and clears warnings before executing the new SQL statement.

        When batch updates are run, autocommit should usually be turned off. This allows the caller to decide whether or not to commit the transaction in the event that an error occurs and some of the SQL statements in a batch fail to run.

        Specified by:
        executeBatch in interface java.sql.Statement
        Returns:
        An array of row counts for the SQL statements that are run. The array contains one element for each statement in the batch of SQL statements. The array is ordered according to the order in which the SQL statements were added to the batch.
        Throws:
        java.sql.SQLException - If the statement is not open, an SQL statement contains a syntax error, the query timeout limit is exceeded, an SQL statement returns a result set, or an error occurs.
      • executeQuery

        public java.sql.ResultSet executeQuery(java.lang.String sql)
                                        throws java.sql.SQLException
        Runs an SQL statement that returns a single result set. This closes the current result set and clears warnings before executing the new SQL statement.
        Specified by:
        executeQuery in interface java.sql.Statement
        Parameters:
        sql - The SQL statement.
        Returns:
        The result set that contains the data produced by the query.
        Throws:
        java.sql.SQLException - If the statement is not open, the SQL statement contains a syntax error, no result set is returned by the database, the query timeout limit is exceeded, or an error occurs.
      • executeUpdate

        public int executeUpdate(java.lang.String sql)
                          throws java.sql.SQLException
        Runs an SQL INSERT, UPDATE, or DELETE statement, or any SQL statement that does not return a result set. This closes the current result set and clears warnings before executing the new SQL statement.
        Specified by:
        executeUpdate in interface java.sql.Statement
        Parameters:
        sql - The SQL statement.
        Returns:
        Either the row count for INSERT, UPDATE, or DELETE, or 0 for SQL statements that return nothing.
        Throws:
        java.sql.SQLException - If the statement is not open, the SQL statement contains a syntax error, the query timeout limit is exceeded, the statement returns a result set, or an error occurs.
      • executeUpdate

        public int executeUpdate(java.lang.String sql,
                        int autoGeneratedKeys)
                          throws java.sql.SQLException
        Runs an SQL INSERT, UPDATE, or DELETE statement, or any SQL statement that does not return a result set and makes any auto-generated keys available for retrieval using Statement.getGeneratedKeys(). This closes the current result set and clears warnings before executing the new SQL statement.

        This method requires OS/400 V5R2 or or IBM i. If connecting to OS/400 V5R1 or earlier, an exception will be thrown.

        Specified by:
        executeUpdate in interface java.sql.Statement
        Parameters:
        sql - The SQL statement.
        Returns:
        Either the row count for INSERT, UPDATE, or DELETE, or 0 for SQL statements that return nothing.
        Throws:
        java.sql.SQLException - If the statement is not open, the SQL statement contains a syntax error, the query timeout limit is exceeded, the statement returns a result set, the value for autoGeneratedKeys is not a valid value, if connecting to OS/400 V5R1 or earlier, an error occurs.
        Since:
        Modification 5
      • executeUpdate

        public int executeUpdate(java.lang.String sql,
                        int[] columnIndexes)
                          throws java.sql.SQLException
        Runs an SQL INSERT, UPDATE, or DELETE statement, or any SQL statement that does not return a result set and makes any auto-generated keys for the columns indicated in the given array available for retrieval using Statement.getGeneratedKeys(). This closes the current result set and clears warnings before executing the new SQL statement.

        This method is not supported when connecting to IBM i V5R4 or earlier systems.

        Specified by:
        executeUpdate in interface java.sql.Statement
        Parameters:
        sql - The SQL statement.
        columnIndexes - The indexes of columns for which auto-generated keys should be made available for retrieval.
        Returns:
        Either the row count for INSERT, UPDATE, or DELETE, or 0 for SQL statements that return nothing.
        Throws:
        java.sql.SQLException - If connection to IBM i V5R4 or earlier systems, the statement is not open, the SQL statement contains a syntax error, the query timeout limit is exceeded, the statement returns a result set, the value for autoGeneratedKeys is not a valid value or an error occurs.
        Since:
        Modification 5
      • executeUpdate

        public int executeUpdate(java.lang.String sql,
                        java.lang.String[] columnNames)
                          throws java.sql.SQLException
        Runs an SQL INSERT, UPDATE, or DELETE statement, or any SQL statement that does not return a result set and makes any auto-generated keys for the columns indicated in the given array available for retrieval using Statement.getGeneratedKeys(). This closes the current result set and clears warnings before executing the new SQL statement.

        This method is not supported when connecting to IBM i V5R4 or earlier systems.

        Specified by:
        executeUpdate in interface java.sql.Statement
        Parameters:
        sql - The SQL statement.
        columnNames - The column names for which auto-generated keys should be made available for retrieval.
        Returns:
        Either the row count for INSERT, UPDATE, or DELETE, or 0 for SQL statements that return nothing.
        Throws:
        java.sql.SQLException - If connection to IBM i V5R4 or earlier systems, the statement is not open, the SQL statement contains a syntax error, the query timeout limit is exceeded, the statement returns a result set, the value for autoGeneratedKeys is not a valid value or an error occurs.
        Since:
        Modification 5
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Closes the statement if not explicitly closed by the caller.
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable - If an error occurs.
      • getConnection

        public java.sql.Connection getConnection()
                                          throws java.sql.SQLException
        Returns the connection for this statement.
        Specified by:
        getConnection in interface java.sql.Statement
        Returns:
        The connection for this statement.
        Throws:
        java.sql.SQLException - If an error occurs.
      • getFetchDirection

        public int getFetchDirection()
                              throws java.sql.SQLException
        Returns the fetch direction.
        Specified by:
        getFetchDirection in interface java.sql.Statement
        Returns:
        The fetch direction.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • getFetchSize

        public int getFetchSize()
                         throws java.sql.SQLException
        Returns the fetch size.
        Specified by:
        getFetchSize in interface java.sql.Statement
        Returns:
        The fetch size.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • getGeneratedKeys

        public java.sql.ResultSet getGeneratedKeys()
                                            throws java.sql.SQLException
        Retrieves any auto-generated keys created as a result of executing this Statement object.

        In order for this method to return auto-generated keys, the statement must be executed on a table with an identity column. For more information about identity columns, Go to the IBM i Information Center, and search on the phrase "identity column".

        This method will return null if the user did not request auto-generated keys during the execute of a Statement or during the prepare of a PreparedStatement. This method will also return null if the application has not executed the statement before calling this method.

        This method will return an empty result set if the database did not generate any auto-generated keys when executing the statement.

        Specified by:
        getGeneratedKeys in interface java.sql.Statement
        Returns:
        The ResultSet object containing the auto-generated key(s) generated by the execution of this Statement object, an empty result set if the database did not generate any auto-generated keys, or null if the application did not request auto-generated keys or did not execute the statement before calling this method.
        Throws:
        java.sql.SQLException - If the statement is not open, if connecting to OS/400 V5R1 or earlier, an error occurs.
        Since:
        Modification 5
      • getMaxFieldSize

        public int getMaxFieldSize()
                            throws java.sql.SQLException
        Returns the maximum field size limit for the statement. The maximum field size limit is the maximum amount of data returned for any column value. It applies only to BINARY, VARBINARY, CHAR, and VARCHAR fields. If the limit is exceeded, then the excess data is discarded.
        Specified by:
        getMaxFieldSize in interface java.sql.Statement
        Returns:
        The maximum field size limit (in bytes), or 0 for no limit.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • getMaxRows

        public int getMaxRows()
                       throws java.sql.SQLException
        Returns the maximum rows limit for the statement. The maximum rows limit is the maximum number of rows that a result set can contain. If the limit is exceeded, then the excess rows are dropped.
        Specified by:
        getMaxRows in interface java.sql.Statement
        Returns:
        The maximum rows limit, or 0 for no limit.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • getMoreResults

        public boolean getMoreResults()
                               throws java.sql.SQLException
        Returns the next result set. This closes the current result set.
        Specified by:
        getMoreResults in interface java.sql.Statement
        Returns:
        true if another result set is available, false if there are no more result sets.
        Throws:
        java.sql.SQLException - If an error occurs.
      • getMoreResults

        public boolean getMoreResults(int current)
                               throws java.sql.SQLException
        Returns the next result set. This closes the current result set. This method handles any current ResultSet object(s) according to the instructions specified by the actionOnCurrentResultSet parameter, and returns true if the next result is a ResultSet object.
        Specified by:
        getMoreResults in interface java.sql.Statement
        Parameters:
        current - What should happen to current ResultSet objects obtained using the method getResultSet. Valid values are CLOSE_CURRENT_RESULT, KEEP_CURRENT_RESULT, and CLOSE_ALL_RESULTS.
        Returns:
        Always false because this method is not supported.
        Throws:
        java.sql.SQLException - if DatabaseMetaData.supportsMultipleOpenResults returns false and either Statement.KEEP_CURRENT_RESULT or Statement.CLOSE_ALL_RESULTS are supplied as the argument.
        Since:
        Modification 5
      • getPositionOfSyntaxError

        public int getPositionOfSyntaxError()
                                     throws java.sql.SQLException
        Will return the value of the last syntax error that came back from the IBM i system.
        Returns:
        The value of the character of the last syntax error from the system, or 0 if no errors occurred or the value is not known.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • getQueryTimeout

        public int getQueryTimeout()
                            throws java.sql.SQLException
        Returns the query timeout limit for this statement. The query timeout limit is the number of seconds that the driver will wait for an SQL statement to execute.
        Specified by:
        getQueryTimeout in interface java.sql.Statement
        Returns:
        The query timeout limit (in seconds), or 0 for no limit.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • getResultSet

        public java.sql.ResultSet getResultSet()
                                        throws java.sql.SQLException
        Returns the current result set.
        Specified by:
        getResultSet in interface java.sql.Statement
        Returns:
        The current result set, or null if an update count was returned or there are no more result sets.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • getResultSetConcurrency

        public int getResultSetConcurrency()
                                    throws java.sql.SQLException
        Returns the result set concurrency to be used for this statement.
        Specified by:
        getResultSetConcurrency in interface java.sql.Statement
        Returns:
        The result set concurrency.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • getResultSetHoldability

        public int getResultSetHoldability()
                                    throws java.sql.SQLException
        Returns the result set cursor holdability to be used for this statement.
        Specified by:
        getResultSetHoldability in interface java.sql.Statement
        Returns:
        The cursor holdability. Valid values are ResultSet.HOLD_CURSORS_OVER_COMMIT and ResultSet.CLOSE_CURSORS_AT_COMMIT. The holdability is derived in this order of precedence:
        • 1. The holdability, if any, that was specified on statement creation using the methods createStatement(), prepareCall(), or prepareStatement() on the Connection object.
        • 2. The holdability specified using the method setHoldability(int) if this method was called on the Connection object.
        • 3. If neither of above methods were called, the value of the cursor hold driver property.
        Full functionality of #1 and #2 requires OS/400 v5r2 or IBM i. If connecting to OS/400 V5R1 or earlier, the value specified on these two methods will be ignored and the default holdability will be the value of #3.
        Throws:
        java.sql.SQLException - If the statement is not open.
        Since:
        Modification 5
      • getResultSetType

        public int getResultSetType()
                             throws java.sql.SQLException
        Returns the result set type to be used for this statement.
        Specified by:
        getResultSetType in interface java.sql.Statement
        Returns:
        The result set type.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • getUpdateCount

        public int getUpdateCount()
                           throws java.sql.SQLException
        Returns the current update count.
        Specified by:
        getUpdateCount in interface java.sql.Statement
        Returns:
        The update count, or -1 if a result set was returned or there are no more result sets.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • getWarnings

        public java.sql.SQLWarning getWarnings()
                                        throws java.sql.SQLException
        Returns the first warning reported for the statement. Subsequent warnings may be chained to this warning.
        Specified by:
        getWarnings in interface java.sql.Statement
        Returns:
        The first warning, or null if no warnings have been reported.
        Throws:
        java.sql.SQLException - If an error occurs.
      • isClosed

        public boolean isClosed()
                         throws java.sql.SQLException
        Indicates if the statement is closed.
        Specified by:
        isClosed in interface java.sql.Statement
        Returns:
        true if the statement is closed; false otherwise.
        Throws:
        java.sql.SQLException - If a database error occurs.
      • setCursorName

        public void setCursorName(java.lang.String cursorName)
                           throws java.sql.SQLException
        Sets the SQL cursor name that will be used by the statement. Cursor names must be unique within the connection. The cursor name can only be set when no result set is open.

        The cursor name can be used in SQL positioned UPDATE or DELETE statements to identify the current row in the result set generated by this statement. By definition, SQL positioned UPDATEs or DELETEs must be executed by a different statement than the one that generated the result set being used for positioning.

        Cursor names are case sensitive. However, when using a cursor name within other SQL positioned UPDATE or DELETE statements, the cursor name will be uppercased. If you use a cursor name with lowercase characters, you need to enclose it in double quotes when referring to it in other SQL statements.

        Specified by:
        setCursorName in interface java.sql.Statement
        Parameters:
        cursorName - The cursor name. If null, a unique default name will be used.
        Throws:
        java.sql.SQLException - If the statement is not open, a result set is open, the cursor name is not unique within the connection, or an error occurs.
      • setEscapeProcessing

        public void setEscapeProcessing(boolean escapeProcessing)
                                 throws java.sql.SQLException
        Sets the escape processing mode. When processing escape clauses, the JDBC driver substitutes escape clauses in SQL statements with DB2 for IBM i SQL grammar elements. If escape processing is not needed, then setting the escape processing mode to false improves performance.
        Specified by:
        setEscapeProcessing in interface java.sql.Statement
        Parameters:
        escapeProcessing - true to process escape clauses; false otherwise. The default is true.
        Throws:
        java.sql.SQLException - If the statement is not open.
      • setFetchDirection

        public void setFetchDirection(int fetchDirection)
                               throws java.sql.SQLException
        Sets the direction in which the rows in a result set will be processed.

        This setting is not used.

        Specified by:
        setFetchDirection in interface java.sql.Statement
        Parameters:
        fetchDirection - The fetch direction for processing rows. Valid values are:
        • ResultSet.FETCH_FORWARD
        • ResultSet.FETCH_REVERSE
        • ResultSet.FETCH_UNKNOWN
        The default is ResultSet.FETCH_FORWARD.
        Throws:
        java.sql.SQLException - If the statement is not open, the result set type is ResultSet.TYPE_FORWARD_ONLY, and the input value is not ResultSet.FETCH_FORWARD, or the input value is not valid.
      • setFetchSize

        public void setFetchSize(int fetchSize)
                          throws java.sql.SQLException
        Sets the number of rows to be fetched from the database when more rows are needed. The number of rows specified only affects result sets created using this statement. If the value specified is zero, then the driver will choose an appropriate fetch size.

        This setting only affects statements that meet the criteria specified in the "block criteria" property. The fetch size is only used if the "block size" property is set to "0".

        This setting only takes effect for result sets that are opened after this method has been called. Ideally, this method should be called before the statement is executed.

        Specified by:
        setFetchSize in interface java.sql.Statement
        Parameters:
        fetchSize - The number of rows. This must be greater than or equal to 0 and less than or equal to the maximum rows limit. The default is zero.
        Throws:
        java.sql.SQLException - If the statement is not open or the input value is not valid.
      • setMaxFieldSize

        public void setMaxFieldSize(int maxFieldSize)
                             throws java.sql.SQLException
        Sets the maximum field size limit. The maximum field size limit is the maximum amount of data returned for any column value. It applies only to BINARY, VARBINARY, CHAR, and VARCHAR fields. If the limit is exceeded, then the excess data is discarded.
        Specified by:
        setMaxFieldSize in interface java.sql.Statement
        Parameters:
        maxFieldSize - The maximum field size limit (in bytes) or 0 for no limit. The default is 0.
        Throws:
        java.sql.SQLException - If the statement is not open or the input value is not valid.
      • setMaxRows

        public void setMaxRows(int maxRows)
                        throws java.sql.SQLException
        Sets the maximum rows limit. The maximum rows limit is the maximum number of rows that a result set can contain. If the limit is exceeded, the excess rows are dropped.
        Specified by:
        setMaxRows in interface java.sql.Statement
        Parameters:
        maxRows - The maximum rows limit or 0 for no limit. The default is 0.
        Throws:
        java.sql.SQLException - If the statement is not open or the input value is not valid.
      • setQueryTimeout

        public void setQueryTimeout(int queryTimeout)
                             throws java.sql.SQLException
        Sets the query timeout limit. The query timeout limit is the number of seconds that the driver will wait for a SQL statement to execute.

        This is implemented using the database query time limit, also known as QQRYTIMLMT. This value specifies the query processing time limit that is compared to the estimated number of elapsed seconds that a query must run. The time limit determines if the database query can start.

        Beginning with Version 6 Release 1 of IBM i, you must have *JOBCTL special authority.

        Specified by:
        setQueryTimeout in interface java.sql.Statement
        Parameters:
        queryTimeout - The query timeout limit (in seconds) or 0 for no limit. The default is the job's query timeout limit value unless this method is explicitly called.
        Throws:
        java.sql.SQLException - If the statement is not open or the input value is not valid.
      • toString

        public java.lang.String toString()
        Returns the statement name.
        Overrides:
        toString in class java.lang.Object
        Returns:
        The statement name.
      • setPoolable

        public void setPoolable(boolean poolable)
                         throws java.sql.SQLException
        Requests that a Statement be pooled or not pooled. The value specified is a hint to the statement pool implementation indicating whether the applicaiton wants the statement to be pooled. It is up to the statement pool manager as to whether the hint is used.

        The poolable value of a statement is applicable to both internal statement caches implemented by the driver and external statement caches implemented by application servers and other applications.

        By default, a Statement is poolable when it is created.

        Specified by:
        setPoolable in interface java.sql.Statement
        Parameters:
        poolable - requests that the statement be pooled if true and that the statement not be pooled if false

        Throws:
        java.sql.SQLException - if the Statement has been closed
      • isPoolable

        public boolean isPoolable()
                           throws java.sql.SQLException
        Returns the value of the statements poolable hint, indicating whether pooling of the statement is requested.

        Specified by:
        isPoolable in interface java.sql.Statement
        Returns:
        The value of the statements poolable hint.

        Throws:
        java.sql.SQLException - if the Statement has been closed

        see java.sql.Statement#setPoolable(boolean) setPoolable(boolean)

      • getValidWrappedList

        protected java.lang.String[] getValidWrappedList()
      • closeOnCompletion

        public void closeOnCompletion()
                               throws java.sql.SQLException
        Specifies that this Statement will be closed when all its dependent result sets are closed. If execution of the Statement does not produce any result sets, this method has no effect.

        Note: Multiple calls to closeOnCompletion do not toggle the effect on this Statement. However, a call to closeOnCompletion does effect both the subsequent execution of statements, and statements that currently have open, dependent, result sets.

        Throws:
        java.sql.SQLException - - if this method is called on a closed Statement
      • isCloseOnCompletion

        public boolean isCloseOnCompletion()
                                    throws java.sql.SQLException
        Returns a value indicating whether this Statement will be closed when all its dependent result sets are closed.
        Returns:
        true if the Statement will be closed when all of its dependent result sets are closed; false otherwise
        Throws:
        java.sql.SQLException - - if this method is called on a closed Statement
      • startCancelThread

        protected void startCancelThread()
        Handles the work involved in supporting a setQueryTimeout option with the cancel property set. .
      • endCancelThread

        protected void endCancelThread()
        endTheCancelThread
      • getLargeUpdateCount

        public long getLargeUpdateCount()
                                 throws java.sql.SQLException

        Retrieves the current result as an update count; if the result is a ResultSet object or there are no more results, -1 is returned. This method should be called only once per result.

        This method should be used when the returned row count may exceed Integer.MAX_VALUE.

        Returns:
        the current result as an update count; -1 if the current result is a ResultSet object or there are no more results
        Throws:
        java.sql.SQLException - - if a database access error occurs or this method is called on a closed Statement
      • setLargeMaxRows

        public void setLargeMaxRows(long max)
                             throws java.sql.SQLException

        Sets the limit for the maximum number of rows that any ResultSet object generated by this Statement object can contain to the given number. If the limit is exceeded, the excess rows are silently dropped.

        This method should be used when the row limit may exceed Integer.MAX_VALUE.

        Parameters:
        max - the new max rows limit; zero means there is no limit
        Throws:
        java.sql.SQLException - - if a database access error occurs, this method is called on a closed Statement or the condition max >= 0 is not satisfied
      • getLargeMaxRows

        public long getLargeMaxRows()
                             throws java.sql.SQLException
        Retrieves the maximum number of rows that a ResultSet object produced by this Statement object can contain. If this limit is exceeded, the excess rows are silently dropped.

        This method should be used when the returned row limit may exceed Integer.MAX_VALUE.

        Returns:
        the current maximum number of rows for a ResultSet object produced by this means there is no limit
        Throws:
        java.sql.SQLException - -if a database access error occurs or this method is called on a closed Statement
      • executeLargeBatch

        public long[] executeLargeBatch()
                                 throws java.sql.SQLException

        Submits a batch of commands to the database for execution and if all commands execute successfully, returns an array of update counts. The long elements of the array that is returned are ordered to correspond to the commands in the batch, which are ordered according to the order in which they were added to the batch. The elements in the array returned by the method executeLargeBatch may be one of the following:

        A number greater than or equal to zero -- indicates that the command was processed successfully and is an update count giving the number of rows in the database that were affected by the command's execution

        A value of SUCCESS_NO_INFO -- indicates that the command was processed successfully but that the number of rows affected is unknown.

        If one of the commands in a batch update fails to execute properly, this method throws a BatchUpdateException, and a JDBC driver may or may not continue to process the remaining commands in the batch. However, the driver's behavior must be consistent with a particular DBMS, either always continuing to process commands or never continuing to process commands. If the driver continues processing after a failure, the array returned by the method BatchUpdateException.getLargeUpdateCounts will contain as many elements as there are commands in the batch, and at least one of the elements will be the following:

        A value of EXECUTE_FAILED -- indicates that the command failed to execute successfully and occurs only if a driver continues to process commands after a command fails

        This method should be used when the returned row count may exceed Integer.MAX_VALUE.

        Returns:
        an array of update counts containing one element for each command in the batch. The elements of the array are ordered according to the order in which commands were added to the batch.
        Throws:
        java.sql.SQLException - - if a database access error occurs, this method is called on a closed Statement or the driver does not support batch statements. Throws BatchUpdateException (a subclass of SQLException) if one of the commands sent to the database fails to execute properly or attempts to return a result set.
        java.sql.SQLException - - when the driver has determined that the timeout value that was specified by the setQueryTimeout method has been exceeded and has at least attempted to cancel the currently running Statement
      • executeLargeUpdate

        public long executeLargeUpdate(java.lang.String sql)
                                throws java.sql.SQLException
        Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.

        This method should be used when the returned row count may exceed Integer.MAX_VALUE.

        Note:This method cannot be called on a PreparedStatement or CallableStatement.

        Parameters:
        sql - an SQL Data Manipulation Language (DML) statement, such as INSERT, UPDATE or DELETE; or an SQL statement that returns nothing, such as a DDL statement.
        Returns:
        either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing
        Throws:
        java.sql.SQLException - - if a database access error occurs, this method is called on a closed Statement, the given SQL statement produces a ResultSet object, the method is called on a PreparedStatement or CallableStatement.
      • executeLargeUpdate

        public long executeLargeUpdate(java.lang.String sql,
                              int autoGeneratedKeys)
                                throws java.sql.SQLException
        Executes the given SQL statement and signals the driver with the given flag about whether the auto-generated keys produced by this Statement object should be made available for retrieval. The driver will ignore the flag if the SQL statement is not an INSERT statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).

        This method should be used when the returned row count may exceed Integer.MAX_VALUE.

        Parameters:
        sql - - an SQL Data Manipulation Language (DML) statement, such as INSERT, UPDATE or DELETE; or an SQL statement that returns nothing, such as a DDL statement.
        autoGeneratedKeys - - a flag indicating whether auto-generated keys should be made available for retrieval; one of the following constants: Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
        Returns:
        either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing
        Throws:
        java.sql.SQLException - - if a database access error occurs, this method is called on a closed Statement, the given SQL statement returns a ResultSet object, the given constant is not one of those allowed, the method is called on a PreparedStatement or CallableStatement
      • executeLargeUpdate

        public long executeLargeUpdate(java.lang.String sql,
                              int[] columnIndexes)
                                throws java.sql.SQLException
        Executes the given SQL statement and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval. This array contains the indexes of the columns in the target table that contain the auto-generated keys that should be made available. The driver will ignore the array if the SQL statement is not an INSERT statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).

        This method should be used when the returned row count may exceed Integer.MAX_VALUE.

        Note:This method cannot be called on a PreparedStatement or CallableStatement.

        Parameters:
        sql - - an SQL Data Manipulation Language (DML) statement, such as INSERT, UPDATE or DELETE; or an SQL statement that returns nothing, such as a DDL statement.
        columnIndexes - - an array of column indexes indicating the columns that should be returned from the inserted row
        Returns:
        either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing
        Throws:
        java.sql.SQLException - - if a database access error occurs, this method is called on a closed Statement, the SQL statement returns a ResultSet object,the second argument supplied to this method is not an int array whose elements are valid column indexes, the method is called on a PreparedStatement or CallableStatement
      • executeLargeUpdate

        public long executeLargeUpdate(java.lang.String sql,
                              java.lang.String[] columnNames)
                                throws java.sql.SQLException
        Executes the given SQL statement and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval. This array contains the names of the columns in the target table that contain the auto-generated keys that should be made available. The driver will ignore the array if the SQL statement is not an INSERT statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).

        This method should be used when the returned row count may exceed Integer.MAX_VALUE.

        Note:This method cannot be called on a PreparedStatement or CallableStatement.

        Parameters:
        sql - - an SQL Data Manipulation Language (DML) statement, such as INSERT, UPDATE or DELETE; or an SQL statement that returns nothing, such as a DDL statement.
        columnNames - - an array of the names of the columns that should be returned from the inserted row
        Returns:
        either the row count for INSERT, UPDATE, or DELETE statements, or 0 for SQL statements that return nothing
        Throws:
        java.sql.SQLException - if a database access error occurs, this method is called on a closed Statement, the SQL statement returns a ResultSet object, the second argument supplied to this method is not a String array whose elements are valid column names, the method is called on a PreparedStatement or CallableStatement