Class EmbedPreparedStatement

    • Field Detail

      • rMetaData

        protected java.sql.ResultSetMetaData rMetaData
      • gcDuringGetMetaData

        private java.lang.String gcDuringGetMetaData
      • usePreTenFiveHdrFormat

        private java.lang.Boolean usePreTenFiveHdrFormat
        Tells which header format to use when writing CLOBs into the store.

        This is lazily set if we need it, and there are currently only two valid header formats to choose between.

        See Also:
        usePreTenFiveHdrFormat()
    • Constructor Detail

      • EmbedPreparedStatement

        public EmbedPreparedStatement​(EmbedConnection conn,
                                      java.lang.String sql,
                                      boolean forMetaData,
                                      int resultSetType,
                                      int resultSetConcurrency,
                                      int resultSetHoldability,
                                      int autoGeneratedKeys,
                                      int[] columnIndexes,
                                      java.lang.String[] columnNames)
                               throws java.sql.SQLException
        Constructor assumes caller will setup context stack and restore it.
        Throws:
        java.sql.SQLException
    • Method Detail

      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        JDBC states that a Statement is closed when garbage collected.
        Overrides:
        finalize in class EmbedStatement
        Throws:
        java.lang.Throwable - Allows any exception to be thrown during finalize
      • execute

        public final boolean execute​(java.lang.String sql)
                              throws java.sql.SQLException
        Description copied from class: EmbedStatement
        Execute a SQL statement that may return multiple results. Under some (uncommon) situations a single SQL statement may return multiple result sets and/or update counts. Normally you can ignore this, unless you're executing a stored procedure that you know may return multiple results, or unless you're dynamically executing an unknown SQL string. The "execute", "getMoreResults", "getResultSet" and "getUpdateCount" methods let you navigate through multiple results. The "execute" method executes a SQL statement and indicates the form of the first result. You can then use getResultSet or getUpdateCount to retrieve the result, and getMoreResults to move to any subsequent result(s).
        Specified by:
        execute in interface java.sql.Statement
        Overrides:
        execute in class EmbedStatement
        Parameters:
        sql - any SQL statement
        Returns:
        true if the first result is a ResultSet; false if it is an integer
        Throws:
        java.sql.SQLException - thrown on failure
        See Also:
        EmbedStatement.getResultSet(), EmbedStatement.getUpdateCount(), EmbedStatement.getMoreResults()
      • execute

        public final boolean execute​(java.lang.String sql,
                                     int autoGenKeys)
                              throws java.sql.SQLException
        Description copied from class: EmbedStatement
        JDBC 3.0 Executes the given SQL statement, which may return multiple results, and signals the driver that any auto-generated keys should be made available for retrieval. The driver will ignore this signal if the SQL statement is not an INSERT/UPDATE statement.
        Specified by:
        execute in interface java.sql.Statement
        Overrides:
        execute in class EmbedStatement
        Parameters:
        sql - any SQL statement
        autoGenKeys - - a constant indicating whether auto-generated keys should be made available for retrieval using the method getGeneratedKeys; one of the following constants: Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYS
        Returns:
        rue if the first result is a ResultSet object; false if it is an update count or there are no results
        Throws:
        java.sql.SQLException - if a database access error occurs
      • execute

        public final boolean execute​(java.lang.String sql,
                                     int[] columnIndexes)
                              throws java.sql.SQLException
        Description copied from class: EmbedStatement
        JDBC 3.0 Executes the given SQL statement, which may return multiple results, 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 given SQL statement is not an INSERT/UPDATE statement.
        Specified by:
        execute in interface java.sql.Statement
        Overrides:
        execute in class EmbedStatement
        Parameters:
        sql - any SQL statement
        columnIndexes - - an array of the indexes of the columns in the inserted/updated row that should be made available for retrieval by a call to the method getGeneratedKeys
        Returns:
        rue if the first result is a ResultSet object; false if it is an update count or there are no results
        Throws:
        java.sql.SQLException - if a database access error occurs
      • execute

        public final boolean execute​(java.lang.String sql,
                                     java.lang.String[] columnNames)
                              throws java.sql.SQLException
        Description copied from class: EmbedStatement
        JDBC 3.0 Executes the given SQL statement, which may return multiple results, 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 given SQL statement is not an INSERT/UPDATE statement.
        Specified by:
        execute in interface java.sql.Statement
        Overrides:
        execute in class EmbedStatement
        Parameters:
        sql - any SQL statement
        columnNames - - an array of the names of the columns in the inserted/updated row that should be made available for retrieval by a call to the method getGeneratedKeys
        Returns:
        rue if the first result is a ResultSet object; false if it is an update count or there are no results
        Throws:
        java.sql.SQLException - if a database access error occurs
      • executeQuery

        public final java.sql.ResultSet executeQuery​(java.lang.String sql)
                                              throws java.sql.SQLException
        Description copied from class: EmbedStatement
        Execute a SQL statement that returns a single ResultSet.
        Specified by:
        executeQuery in interface java.sql.Statement
        Overrides:
        executeQuery in class EmbedStatement
        Parameters:
        sql - typically this is a static SQL SELECT statement
        Returns:
        a ResultSet that contains the data produced by the query; never null
        Throws:
        java.sql.SQLException - thrown on failure.
      • executeUpdate

        public final int executeUpdate​(java.lang.String sql)
                                throws java.sql.SQLException
        Description copied from class: EmbedStatement
        Execute a SQL INSERT, UPDATE or DELETE statement. In addition, SQL statements that return nothing such as SQL DDL statements can be executed.
        Specified by:
        executeUpdate in interface java.sql.Statement
        Overrides:
        executeUpdate in class EmbedStatement
        Parameters:
        sql - a SQL INSERT, UPDATE or DELETE statement or a SQL statement that returns nothing
        Returns:
        either the row count for INSERT, UPDATE or DELETE; or 0 for SQL statements that return nothing
        Throws:
        java.sql.SQLException - thrown on failure.
      • executeUpdate

        public final int executeUpdate​(java.lang.String sql,
                                       int autoGenKeys)
                                throws java.sql.SQLException
        Description copied from class: EmbedStatement
        JDBC 3.0 Execute 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.
        Specified by:
        executeUpdate in interface java.sql.Statement
        Overrides:
        executeUpdate in class EmbedStatement
        Parameters:
        sql - a SQL INSERT, UPDATE or DELETE statement or a SQL statement that returns nothing
        autoGenKeys - - 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 the row count for INSERT, UPDATE or DELETE; or 0 for SQL statements that return nothing
        Throws:
        java.sql.SQLException - if a database access error occurs
      • executeUpdate

        public final int executeUpdate​(java.lang.String sql,
                                       int[] columnIndexes)
                                throws java.sql.SQLException
        Description copied from class: EmbedStatement
        JDBC 3.0 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. The driver will ignore the array if the SQL statement is not an INSERT statement
        Specified by:
        executeUpdate in interface java.sql.Statement
        Overrides:
        executeUpdate in class EmbedStatement
        Parameters:
        sql - a SQL INSERT, UPDATE or DELETE statement or a SQL statement that returns nothing
        columnIndexes - - an array of column indexes indicating the columns that should be returned from the inserted row
        Returns:
        either the row count for INSERT, UPDATE or DELETE; or 0 for SQL statements that return nothing
        Throws:
        java.sql.SQLException - if a database access error occurs
      • executeUpdate

        public final int executeUpdate​(java.lang.String sql,
                                       java.lang.String[] columnNames)
                                throws java.sql.SQLException
        Description copied from class: EmbedStatement
        JDBC 3.0 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. The driver will ignore the array if the SQL statement is not an INSERT statement
        Specified by:
        executeUpdate in interface java.sql.Statement
        Overrides:
        executeUpdate in class EmbedStatement
        Parameters:
        sql - a SQL INSERT, UPDATE or DELETE statement or a SQL statement that returns nothing
        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; or 0 for SQL statements that return nothing
        Throws:
        java.sql.SQLException - if a database access error occurs
      • addBatch

        public final void addBatch​(java.lang.String sql)
                            throws java.sql.SQLException
        Description copied from class: EmbedStatement
        JDBC 2.0 Adds a SQL command to the current batch of commmands for the statement. This method is optional.
        Specified by:
        addBatch in interface java.sql.Statement
        Overrides:
        addBatch in class EmbedStatement
        Parameters:
        sql - typically this is a static SQL INSERT or UPDATE statement
        Throws:
        java.sql.SQLException - if a database-access error occurs, or the driver does not support batch statements
      • closeActions

        void closeActions()
                   throws java.sql.SQLException
        Additional close to close our activation. In the case that a XAConnection is involved in the creation of this PreparedStatement for e.g in the following case XAConnection xaconn = xadatasource.getXAConnection();//where xadatasource is an object of XADataSource Connection conn = xaconnection.getConnection(); PreparedStatement ps = conn.preparedStatement("values 1"); In the above case the PreparedStatement will actually be a BrokeredPreparedStatement object. Hence when we call bcc.onStatementClose and pass the PreparedStatement that caused it applicationStatement will be the appropriate choice since it will contain the appropriate instance of PreparedStatement in each case
        Overrides:
        closeActions in class EmbedStatement
        Throws:
        java.sql.SQLException - upon failure
      • executeQuery

        public final java.sql.ResultSet executeQuery()
                                              throws java.sql.SQLException
        A prepared SQL query is executed and its ResultSet is returned.
        Specified by:
        executeQuery in interface java.sql.PreparedStatement
        Returns:
        a ResultSet that contains the data produced by the query; never null
        Throws:
        java.sql.SQLException - thrown on failure.
      • executeUpdate

        public final int executeUpdate()
                                throws java.sql.SQLException
        Execute a SQL INSERT, UPDATE or DELETE statement. In addition, SQL statements that return nothing such as SQL DDL statements can be executed.
        Specified by:
        executeUpdate in interface java.sql.PreparedStatement
        Returns:
        either the row count for INSERT, UPDATE or DELETE; or 0 for SQL statements that return nothing
        Throws:
        java.sql.SQLException - thrown on failure.
      • executeLargeUpdate

        public final long executeLargeUpdate()
                                      throws java.sql.SQLException
        Execute a SQL INSERT, UPDATE or DELETE statement. In addition, SQL statements that return nothing such as SQL DDL statements can be executed. For use with statements which may touch more than Integer.MAX_VALUE rows.
        Specified by:
        executeLargeUpdate in interface EnginePreparedStatement
        Specified by:
        executeLargeUpdate in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setNull

        public void setNull​(int parameterIndex,
                            int sqlType)
                     throws java.sql.SQLException
        Set a parameter to SQL NULL.

        Note: You must specify the parameter's SQL type.

        Specified by:
        setNull in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        sqlType - SQL type code defined by java.sql.Types
        Throws:
        java.sql.SQLException - thrown on failure.
      • setBoolean

        public void setBoolean​(int parameterIndex,
                               boolean x)
                        throws java.sql.SQLException
        Set a parameter to a Java boolean value. According to the JDBC API spec, the driver converts this to a SQL BIT value when it sends it to the database. But we don't have to do this, since the database engine supports a boolean type.
        Specified by:
        setBoolean in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setByte

        public void setByte​(int parameterIndex,
                            byte x)
                     throws java.sql.SQLException
        Set a parameter to a Java byte value. The driver converts this to a SQL TINYINT value when it sends it to the database.
        Specified by:
        setByte in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setShort

        public void setShort​(int parameterIndex,
                             short x)
                      throws java.sql.SQLException
        Set a parameter to a Java short value. The driver converts this to a SQL SMALLINT value when it sends it to the database.
        Specified by:
        setShort in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setInt

        public void setInt​(int parameterIndex,
                           int x)
                    throws java.sql.SQLException
        Set a parameter to a Java int value. The driver converts this to a SQL INTEGER value when it sends it to the database.
        Specified by:
        setInt in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setLong

        public void setLong​(int parameterIndex,
                            long x)
                     throws java.sql.SQLException
        Set a parameter to a Java long value. The driver converts this to a SQL BIGINT value when it sends it to the database.
        Specified by:
        setLong in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setBigDecimal

        public final void setBigDecimal​(int parameterIndex,
                                        java.math.BigDecimal x)
                                 throws java.sql.SQLException
        Set a parameter to a java.lang.BigDecimal value. The driver converts this to a SQL NUMERIC value when it sends it to the database.
        Specified by:
        setBigDecimal in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setFloat

        public void setFloat​(int parameterIndex,
                             float x)
                      throws java.sql.SQLException
        Set a parameter to a Java float value. The driver converts this to a SQL FLOAT value when it sends it to the database.
        Specified by:
        setFloat in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setDouble

        public void setDouble​(int parameterIndex,
                              double x)
                       throws java.sql.SQLException
        Set a parameter to a Java double value. The driver converts this to a SQL DOUBLE value when it sends it to the database.
        Specified by:
        setDouble in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setString

        public void setString​(int parameterIndex,
                              java.lang.String x)
                       throws java.sql.SQLException
        Set a parameter to a Java String value. The driver converts this to a SQL VARCHAR or LONGVARCHAR value (depending on the arguments size relative to the driver's limits on VARCHARs) when it sends it to the database.
        Specified by:
        setString in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setBytes

        public void setBytes​(int parameterIndex,
                             byte[] x)
                      throws java.sql.SQLException
        Set a parameter to a Java array of bytes. The driver converts this to a SQL VARBINARY or LONGVARBINARY (depending on the argument's size relative to the driver's limits on VARBINARYs) when it sends it to the database.
        Specified by:
        setBytes in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setDate

        public void setDate​(int parameterIndex,
                            java.sql.Date x)
                     throws java.sql.SQLException
        Set a parameter to a java.sql.Date value. The driver converts this to a SQL DATE value when it sends it to the database.
        Specified by:
        setDate in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setTime

        public void setTime​(int parameterIndex,
                            java.sql.Time x)
                     throws java.sql.SQLException
        Set a parameter to a java.sql.Time value. The driver converts this to a SQL TIME value when it sends it to the database.
        Specified by:
        setTime in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setTimestamp

        public void setTimestamp​(int parameterIndex,
                                 java.sql.Timestamp x)
                          throws java.sql.SQLException
        Set a parameter to a java.sql.Timestamp value. The driver converts this to a SQL TIMESTAMP value when it sends it to the database.
        Specified by:
        setTimestamp in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • setAsciiStream

        public final void setAsciiStream​(int parameterIndex,
                                         java.io.InputStream x,
                                         long length)
                                  throws java.sql.SQLException
        We do this inefficiently and read it all in here. The target type is assumed to be a String.
        Specified by:
        setAsciiStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the java input stream which contains the ASCII parameter value
        length - the number of bytes in the stream
        Throws:
        java.sql.SQLException - thrown on failure.
      • setAsciiStream

        public final void setAsciiStream​(int parameterIndex,
                                         java.io.InputStream x,
                                         int length)
                                  throws java.sql.SQLException
        We do this inefficiently and read it all in here. The target type is assumed to be a String.
        Specified by:
        setAsciiStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the java input stream which contains the ASCII parameter value
        length - the number of bytes in the stream
        Throws:
        java.sql.SQLException - thrown on failure.
      • setUnicodeStream

        public void setUnicodeStream​(int parameterIndex,
                                     java.io.InputStream x,
                                     int length)
                              throws java.sql.SQLException
        Deprecated.
        Deprecated in JDBC 3.0
        Specified by:
        setUnicodeStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the java input stream which contains the UNICODE parameter value
        length - the number of bytes in the stream
        Throws:
        java.sql.SQLException - thrown on failure.
      • setCharacterStream

        public final void setCharacterStream​(int parameterIndex,
                                             java.io.Reader reader,
                                             long length)
                                      throws java.sql.SQLException
        When a very large UNICODE value is input to a LONGVARCHAR parameter, it may be more practical to send it via a java.io.Reader. JDBC will read the data from the stream as needed, until it reaches end-of-file. The JDBC driver will do any necessary conversion from UNICODE to the database char format.

        Note: This stream object can either be a standard Java stream object or your own subclass that implements the standard interface.

        Specified by:
        setCharacterStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        reader - the java reader which contains the UNICODE data
        length - the number of characters in the stream
        Throws:
        java.sql.SQLException - if a database-access error occurs.
      • setCharacterStream

        public final void setCharacterStream​(int parameterIndex,
                                             java.io.Reader reader,
                                             int length)
                                      throws java.sql.SQLException
        When a very large UNICODE value is input to a LONGVARCHAR parameter, it may be more practical to send it via a java.io.Reader. JDBC will read the data from the stream as needed, until it reaches end-of-file. The JDBC driver will do any necessary conversion from UNICODE to the database char format.

        Note: This stream object can either be a standard Java stream object or your own subclass that implements the standard interface.

        Specified by:
        setCharacterStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        reader - the java reader which contains the UNICODE data
        length - the number of characters in the stream
        Throws:
        java.sql.SQLException - if a database-access error occurs.
      • checkCharacterStreamConditions

        private final void checkCharacterStreamConditions​(int parameterIndex)
                                                   throws java.sql.SQLException
        Check general preconditions for setCharacterStream methods.
        Parameters:
        parameterIndex - 1-based index of the parameter.
        Throws:
        java.sql.SQLException
      • checkAsciiStreamConditions

        private final void checkAsciiStreamConditions​(int parameterIndex)
                                               throws java.sql.SQLException
        Check general preconditions for setAsciiStream methods.
        Parameters:
        parameterIndex - 1-based index of the parameter.
        Throws:
        java.sql.SQLException
      • setCharacterStreamInternal

        private void setCharacterStreamInternal​(int parameterIndex,
                                                java.io.Reader reader,
                                                boolean lengthLess,
                                                long length)
                                         throws java.sql.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:
        parameterIndex - 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:
        java.sql.SQLException
      • usePreTenFiveHdrFormat

        private java.lang.Boolean usePreTenFiveHdrFormat()
                                                  throws StandardException
        Determines which header format to use for CLOBs when writing them to the store.
        Returns:
        true if the pre Derby 10.5 header format is to be used, false if the new header format can be used (10.5 or newer)
        Throws:
        StandardException - if obtaining the access mode fails
      • setBinaryStream

        public void setBinaryStream​(int parameterIndex,
                                    java.io.InputStream x)
                             throws java.sql.SQLException
        Sets the designated parameter to the given input stream. When a very large binary value is input to a LONGVARBINARY parameter, it may be more practical to send it via a java.io.InputStream object. The data will be read from the stream as needed until end-of-file is reached. Note: This stream object can either be a standard Java stream object or your own subclass that implements the standard interface.
        Specified by:
        setBinaryStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the java input stream which contains the binary parameter value
        Throws:
        java.sql.SQLException - if a database access error occurs or this method is called on a closed PreparedStatement
      • setBinaryStream

        public final void setBinaryStream​(int parameterIndex,
                                          java.io.InputStream x,
                                          long length)
                                   throws java.sql.SQLException
        sets the parameter to the Binary stream
        Specified by:
        setBinaryStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the java input stream which contains the binary parameter value
        length - the number of bytes in the stream
        Throws:
        java.sql.SQLException - thrown on failure.
      • setBinaryStream

        public final void setBinaryStream​(int parameterIndex,
                                          java.io.InputStream x,
                                          int length)
                                   throws java.sql.SQLException
        sets the parameter to the binary stream
        Specified by:
        setBinaryStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the java input stream which contains the binary parameter value
        length - the number of bytes in the stream
        Throws:
        java.sql.SQLException - thrown on failure.
      • setBinaryStreamInternal

        private void setBinaryStreamInternal​(int parameterIndex,
                                             java.io.InputStream x,
                                             boolean lengthLess,
                                             long length)
                                      throws java.sql.SQLException
        Set the given 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:
        parameterIndex - 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.
        Throws:
        java.sql.SQLException
      • checkBinaryStreamConditions

        private final void checkBinaryStreamConditions​(int parameterIndex)
                                                throws java.sql.SQLException
        Check general preconditions for setBinaryStream methods.
        Parameters:
        parameterIndex - 1-based index of the parameter.
        Throws:
        java.sql.SQLException
      • setNull

        public void setNull​(int paramIndex,
                            int sqlType,
                            java.lang.String typeName)
                     throws java.sql.SQLException
        JDBC 2.0 Sets the designated parameter to SQL NULL. This version of the method setNull should be used for user-defined types and REF type parameters. Examples of user-defined types include: STRUCT, DISTINCT, JAVA_OBJECT, and named array types.
        Specified by:
        setNull in interface java.sql.PreparedStatement
        Parameters:
        paramIndex - the first parameter is 1, the second is 2, ...
        sqlType - a value from java.sql.Types
        typeName - the fully-qualified name of an SQL user-defined type; ignored if the parameter is not a user-defined type or REF
        Throws:
        java.sql.SQLException - if a database access error occurs or this method is called on a closed PreparedStatement
        java.sql.SQLFeatureNotSupportedException - if Derby does not support the type specified in the sqlType parameter
      • addBatch

        public void addBatch()
                      throws java.sql.SQLException
        JDBC 2.0 Add a set of parameters to the batch.
        Specified by:
        addBatch in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException - if a database-access error occurs.
      • clearParameters

        public void clearParameters()
                             throws java.sql.SQLException

        In general, parameter values remain in force for repeated use of a Statement. Setting a parameter value automatically clears its previous value. However, in some cases it is useful to immediately release the resources used by the current parameter values; this can be done by calling clearParameters.

        Specified by:
        clearParameters in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException - thrown on failure.
      • getMetaData

        public java.sql.ResultSetMetaData getMetaData()
                                               throws java.sql.SQLException
        JDBC 2.0 The number, types and properties of a ResultSet's columns are provided by the getMetaData method.
        Specified by:
        getMetaData in interface java.sql.PreparedStatement
        Returns:
        the description of a ResultSet's columns
        Throws:
        java.sql.SQLException - Feature not implemented for now.
      • setRef

        public final void setRef​(int i,
                                 java.sql.Ref x)
                          throws java.sql.SQLException
        JDBC 2.0 Set a REF(<structured-type>) parameter.
        Specified by:
        setRef in interface java.sql.PreparedStatement
        Parameters:
        i - the first parameter is 1, the second is 2, ...
        x - an object representing data of an SQL REF Type
        Throws:
        java.sql.SQLException - Feature not implemented for now.
      • setArray

        public final void setArray​(int i,
                                   java.sql.Array x)
                            throws java.sql.SQLException
        JDBC 2.0 Set an Array parameter.
        Specified by:
        setArray in interface java.sql.PreparedStatement
        Parameters:
        i - the first parameter is 1, the second is 2, ...
        x - an object representing an SQL array
        Throws:
        java.sql.SQLException - Feature not implemented for now.
      • setObject

        public final void setObject​(int parameterIndex,
                                    java.lang.Object x,
                                    int targetSqlType,
                                    int scale)
                             throws java.sql.SQLException
        The interface says that the type of the Object parameter must be compatible with the type of the targetSqlType. We check that, and if it flies, we expect the underlying engine to do the required conversion once we pass in the value using its type. So, an Integer converting to a CHAR is done via setInteger() support on the underlying CHAR type.

        If x is null, it won't tell us its type, so we pass it on to setNull

        Specified by:
        setObject in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - The first parameter is 1, the second is 2, ...
        x - The object containing the input parameter value
        targetSqlType - The SQL type (as defined in java.sql.Types) to be sent to the database. The scale argument may further qualify this type.
        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:
        java.sql.SQLException - thrown on failure.
      • setObject

        public final void setObject​(int parameterIndex,
                                    java.lang.Object x,
                                    int targetSqlType)
                             throws java.sql.SQLException
        This method is like setObject above, but assumes a scale of zero.
        Specified by:
        setObject in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException - thrown on failure.
      • setObject

        public final void setObject​(int parameterIndex,
                                    java.lang.Object x)
                             throws java.sql.SQLException

        Set the value of a parameter using an object; use the java.lang equivalent objects for integral values.

        The JDBC specification specifies a standard mapping from Java Object types to SQL types. The given argument java object will be converted to the corresponding SQL type before being sent to the database.

        Note that this method may be used to pass datatabase specific abstract data types, by using a Driver specific Java type.

        Specified by:
        setObject in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - The first parameter is 1, the second is 2, ...
        x - The object containing the input parameter value
        Throws:
        java.sql.SQLException - thrown on failure.
      • execute

        public final boolean execute()
                              throws java.sql.SQLException
        Specified by:
        execute in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException - thrown on failure.
        See Also:
        Statement.execute(java.lang.String)
      • setDate

        public final void setDate​(int parameterIndex,
                                  java.sql.Date x,
                                  java.util.Calendar cal)
                           throws java.sql.SQLException
        Set a parameter to a java.sql.Date value. The driver converts this to a SQL DATE value when it sends it to the database.
        Specified by:
        setDate in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - Feature not implemented for now.
      • setTime

        public final void setTime​(int parameterIndex,
                                  java.sql.Time x,
                                  java.util.Calendar cal)
                           throws java.sql.SQLException
        Set a parameter to a java.sql.Time value. The driver converts this to a SQL TIME value when it sends it to the database.
        Specified by:
        setTime in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - Feature not implemented for now.
      • setTimestamp

        public final void setTimestamp​(int parameterIndex,
                                       java.sql.Timestamp x,
                                       java.util.Calendar cal)
                                throws java.sql.SQLException
        Set a parameter to a java.sql.Timestamp value. The driver converts this to a SQL TIMESTAMP value when it sends it to the database.
        Specified by:
        setTimestamp in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the parameter value
        Throws:
        java.sql.SQLException - Feature not implemented for now.
      • setBlob

        public void setBlob​(int i,
                            java.sql.Blob x)
                     throws java.sql.SQLException
        JDBC 2.0 Set a BLOB parameter.
        Specified by:
        setBlob in interface java.sql.PreparedStatement
        Parameters:
        i - the first parameter is 1, the second is 2, ...
        x - an object representing a BLOB
        Throws:
        java.sql.SQLException
      • checkClobConditions

        private final void checkClobConditions​(int parameterIndex)
                                        throws java.sql.SQLException
        Check general (pre)conditions for setClob methods.
        Parameters:
        parameterIndex - 1-based index of the parameter.
        Throws:
        java.sql.SQLException
      • setClob

        public void setClob​(int i,
                            java.sql.Clob x)
                     throws java.sql.SQLException
        JDBC 2.0 Set a CLOB parameter.
        Specified by:
        setClob in interface java.sql.PreparedStatement
        Parameters:
        i - the first parameter is 1, the second is 2, ...
        x - an object representing a CLOB
        Throws:
        java.sql.SQLException
      • getParms

        public final ParameterValueSet getParms()
        Get the ParameterValueSet from the activation. The caller of this method should be aware that the activation associated with a Statement can change and hence the ParameterValueSet returned by this call should not be hold onto. An example of this can be seen in EmbedCallableStatement.executeStatement where at the beginning of the method, we check the validity of the parameters. But we donot keep the parameters in a local variable to use later. The reason for this is that the next call in the method, super.executeStatement can recompile the statement and create a new activation if the statement plan has been invalidated. To account for this possibility, EmbedCallableStatement.executeStatement makes another call to get the ParameterValueSet before stuffing the output parameter value into the ParameterValueSet object.
        Returns:
        The ParameterValueSet for the activation
      • getParameterJDBCType

        protected int getParameterJDBCType​(int parameterIndex)
                                    throws java.sql.SQLException
        Get the target JDBC type for a parameter. Will throw exceptions if the parameter index is out of range. The parameterIndex is 1-based.
        Throws:
        java.sql.SQLException - parameter is out of range
      • getParameterSQLType

        protected final java.lang.String getParameterSQLType​(int parameterIndex)
                                                      throws java.sql.SQLException
        Return the SQL type name for the parameter.
        Parameters:
        parameterIndex - the 1-based index of the parameter
        Returns:
        SQL name of the parameter
        Throws:
        java.sql.SQLException - if parameter is out of range
      • setScale

        private void setScale​(int parameterIndex,
                              int scale)
                       throws java.sql.SQLException
        Set the scale of a parameter.
        Parameters:
        parameterIndex - The first parameter is 1, the second is 2, ...
        scale - The scale
        Throws:
        java.sql.SQLException - thrown on failure.
      • setURL

        public final void setURL​(int parameterIndex,
                                 java.net.URL x)
                          throws java.sql.SQLException
        JDBC 3.0 Sets the designated parameter to the given java.net.URL value. The driver converts this to an SQL DATALINK value when it sends it to the database.
        Specified by:
        setURL in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - - the first parameter is 1, the second is 2, ...
        x - - the java.net.URL object to be set
        Throws:
        java.sql.SQLException - Feature not implemented for now.
      • getParameterMetaData

        public final java.sql.ParameterMetaData getParameterMetaData()
                                                              throws java.sql.SQLException
        JDBC 3.0 Retrieves the number, types and properties of this PreparedStatement object's parameters.
        Specified by:
        getParameterMetaData in interface java.sql.PreparedStatement
        Returns:
        a ParameterMetaData object that contains information about the number, types and properties of this PreparedStatement object's parameters.
        Throws:
        java.sql.SQLException - if a database access error occurs
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • transferParameters

        public void transferParameters​(EmbedPreparedStatement newStatement)
                                throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • executeStatement

        boolean executeStatement​(Activation a,
                                 boolean executeQuery,
                                 boolean executeUpdate)
                          throws java.sql.SQLException
        Description copied from class: EmbedStatement
        Execute the current statement.
        Overrides:
        executeStatement in class EmbedStatement
        Throws:
        java.sql.SQLException - thrown on failure.
      • dataTypeConversion

        final java.sql.SQLException dataTypeConversion​(int column,
                                                       java.lang.String sourceType)
                                                throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • setBrokeredConnectionControl

        public void setBrokeredConnectionControl​(BrokeredConnectionControl control)
        This method is used to initialize the BrokeredConnectionControl variable with its implementation. This method will be called in the BrokeredConnectionControl class
        Parameters:
        control - used to call the onStatementClose and onStatementErrorOccurred methods that have logic to raise StatementEvents for the close and error events on the PreparedStatement
      • checkStatementValidity

        private void checkStatementValidity​(java.sql.SQLException sqle)
                                     throws java.sql.SQLException
        Method calls onStatementError occurred on the BrokeredConnectionControl class after checking the SQLState of the SQLException thrown. In the case that a XAConnection is involved in the creation of this PreparedStatement for e.g in the following case XAConnection xaconn = xadatasource.getXAConnection();//where xadatasource is an object of XADataSource Connection conn = xaconnection.getConnection(); PreparedStatement ps = conn.preparedStatement("values 1"); In the above case the PreparedStatement will actually be a BrokeredPreparedStatement object. Hence when we call bcc.onStatementClose and pass the PreparedStatement that caused it applicationStatement will be the appropriate choice since it will contain the appropriate instance of PreparedStatement in each case
        Throws:
        java.sql.SQLException
      • setAsciiStream

        public void setAsciiStream​(int parameterIndex,
                                   java.io.InputStream x)
                            throws java.sql.SQLException
        Sets the designated parameter to the given input stream. When a very large ASCII value is input to a LONGVARCHAR parameter, it may be more practical to send it via a java.io.InputStream. Data will be read from the stream as needed until end-of-file is reached. The JDBC driver will do any necessary conversion from ASCII to the database char format. Note: This stream object can either be a standard Java stream object or your own subclass that implements the standard interface.
        Specified by:
        setAsciiStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        x - the Java input stream that contains the ASCII parameter value
        Throws:
        java.sql.SQLException - if a database access error occurs or this method is called on a closed PreparedStatement
      • setCharacterStream

        public void setCharacterStream​(int parameterIndex,
                                       java.io.Reader reader)
                                throws java.sql.SQLException
        Sets the designated parameter to the given Reader object. When a very large UNICODE value is input to a LONGVARCHAR parameter, it may be more practical to send it via a java.io.Reader object. The data will be read from the stream as needed until end-of-file is reached. The JDBC driver will do any necessary conversion from UNICODE to the database char format. Note: This stream object can either be a standard Java stream object or your own subclass that implements the standard interface. Using this lengthless overload is not less effective than using one where the stream length is specified, but since there is no length specified, the exact length check will not be performed.
        Specified by:
        setCharacterStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the first parameter is 1, the second is 2, ...
        reader - the java.io.Reader object that contains the Unicode data
        Throws:
        java.sql.SQLException - if a database access error occurs or this method is called on a closed PreparedStatement
      • setClob

        public void setClob​(int parameterIndex,
                            java.io.Reader reader)
                     throws java.sql.SQLException
        Sets the designated parameter to a Reader object. This method differs from the setCharacterStream(int,Reader) method because it informs the driver that the parameter value should be sent to the server as a CLOB. When the setCharacterStream method is used, the driver may have to do extra work to determine whether the parameter data should be sent to the server as a LONGVARCHAR or a CLOB.
        Specified by:
        setClob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - index of the first parameter is 1, the second is 2, ...
        reader - an object that contains the data to set the parameter value to.
        Throws:
        java.sql.SQLException - if a database access error occurs, this method is called on a closed PreparedStatementor if parameterIndex does not correspond to a parameter marker in the SQL statement
      • setClob

        public void setClob​(int parameterIndex,
                            java.io.Reader reader,
                            long length)
                     throws java.sql.SQLException
        Sets the designated parameter to a Reader object.
        Specified by:
        setClob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - index of the first parameter is 1, the second is 2, ...
        reader - An object that contains the data to set the parameter value to.
        length - the number of characters in the parameter data.
        Throws:
        java.sql.SQLException - if parameterIndex does not correspond to a parameter marker in the SQL statement, or if the length specified is less than zero.
      • setBlob

        public void setBlob​(int parameterIndex,
                            java.io.InputStream inputStream)
                     throws java.sql.SQLException
        Sets the designated parameter to a InputStream object. This method differs from the setBinaryStream(int, InputStream) method because it informs the driver that the parameter value should be sent to the server as a BLOB. When the setBinaryStream method is used, the driver may have to do extra work to determine whether the parameter data should be sent to the server as a LONGVARBINARY or a BLOB
        Specified by:
        setBlob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - index of the first parameter is 1, the second is 2, ...
        inputStream - an object that contains the data to set the parameter value to.
        Throws:
        java.sql.SQLException - if a database access error occurs, this method is called on a closed PreparedStatement or if parameterIndex does not correspond to a parameter marker in the SQL statement
      • setBlob

        public void setBlob​(int parameterIndex,
                            java.io.InputStream inputStream,
                            long length)
                     throws java.sql.SQLException
        Sets the designated parameter to a InputStream object.
        Specified by:
        setBlob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - index of the first parameter is 1, the second is 2, ...
        inputStream - An object that contains the data to set the parameter value to.
        length - the number of bytes in the parameter data.
        Throws:
        java.sql.SQLException - if parameterIndex does not correspond to a parameter marker in the SQL statement, if the length specified is less than zero or if the number of bytes in the inputstream does not match the specfied length.
      • checkBlobConditions

        private final void checkBlobConditions​(int parameterIndex)
                                        throws java.sql.SQLException
        Check general (pre)conditions for setBlob methods.
        Parameters:
        parameterIndex - 1-based index of the parameter.
        Throws:
        java.sql.SQLException
      • setRowId

        public final void setRowId​(int parameterIndex,
                                   java.sql.RowId x)
                            throws java.sql.SQLException
        Specified by:
        setRowId in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setNString

        public final void setNString​(int index,
                                     java.lang.String value)
                              throws java.sql.SQLException
        Specified by:
        setNString in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setNCharacterStream

        public final void setNCharacterStream​(int parameterIndex,
                                              java.io.Reader value)
                                       throws java.sql.SQLException
        Specified by:
        setNCharacterStream in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setNCharacterStream

        public final void setNCharacterStream​(int index,
                                              java.io.Reader value,
                                              long length)
                                       throws java.sql.SQLException
        Specified by:
        setNCharacterStream in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setNClob

        public final void setNClob​(int parameterIndex,
                                   java.io.Reader reader)
                            throws java.sql.SQLException
        Specified by:
        setNClob in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setNClob

        public final void setNClob​(int index,
                                   java.sql.NClob value)
                            throws java.sql.SQLException
        Specified by:
        setNClob in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setNClob

        public final void setNClob​(int parameterIndex,
                                   java.io.Reader reader,
                                   long length)
                            throws java.sql.SQLException
        Specified by:
        setNClob in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setSQLXML

        public final void setSQLXML​(int parameterIndex,
                                    java.sql.SQLXML xmlObject)
                             throws java.sql.SQLException
        Specified by:
        setSQLXML in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • getVersionCounter

        public final long getVersionCounter()
                                     throws java.sql.SQLException
        Description copied from interface: EnginePreparedStatement
        Get the version of the prepared statement. If this has not been changed, the caller may assume that a recompilation has not taken place, i.e. meta-data are (also) unchanged.
        Specified by:
        getVersionCounter in interface EnginePreparedStatement
        Returns:
        version counter
        Throws:
        java.sql.SQLException