Package org.h2.jdbc

Class JdbcPreparedStatement

  • All Implemented Interfaces:
    java.lang.AutoCloseable, java.sql.PreparedStatement, java.sql.Statement, java.sql.Wrapper, JdbcStatementBackwardsCompat
    Direct Known Subclasses:
    JdbcCallableStatement

    public class JdbcPreparedStatement
    extends JdbcStatement
    implements java.sql.PreparedStatement
    Represents a prepared statement.

    Thread safety: the prepared statement is not thread-safe. If the same prepared statement is used by multiple threads access to it must be synchronized. The single synchronized block must include assignment of parameters, execution of the command and all operations with its result.

     synchronized (prep) {
         prep.setInt(1, 10);
         try (ResultSet rs = prep.executeQuery()) {
             while (rs.next) {
                 // Do something
             }
         }
     }
     synchronized (prep) {
         prep.setInt(1, 15);
         updateCount = prep.executeUpdate();
     }
     
    • Field Detail

      • batchParameters

        private java.util.ArrayList<Value[]> batchParameters
      • cachedColumnLabelMap

        private java.util.HashMap<java.lang.String,​java.lang.Integer> cachedColumnLabelMap
      • generatedKeysRequest

        private final java.lang.Object generatedKeysRequest
    • Constructor Detail

      • JdbcPreparedStatement

        JdbcPreparedStatement​(JdbcConnection conn,
                              java.lang.String sql,
                              int id,
                              int resultSetType,
                              int resultSetConcurrency,
                              java.lang.Object generatedKeysRequest)
    • Method Detail

      • setCachedColumnLabelMap

        void setCachedColumnLabelMap​(java.util.HashMap<java.lang.String,​java.lang.Integer> cachedColumnLabelMap)
        Cache the column labels (looking up the column index can sometimes show up on the performance profile).
        Parameters:
        cachedColumnLabelMap - the column map
      • executeQuery

        public java.sql.ResultSet executeQuery()
                                        throws java.sql.SQLException
        Executes a query (select statement) and returns the result set. If another result set exists for this statement, this will be closed (even if this statement fails).
        Specified by:
        executeQuery in interface java.sql.PreparedStatement
        Returns:
        the result set
        Throws:
        java.sql.SQLException - if this object is closed or invalid
      • executeUpdate

        public int executeUpdate()
                          throws java.sql.SQLException
        Executes a statement (insert, update, delete, create, drop) and returns the update count. If another result set exists for this statement, this will be closed (even if this statement fails). If auto commit is on, this statement will be committed. If the statement is a DDL statement (create, drop, alter) and does not throw an exception, the current transaction (if any) is committed after executing the statement.
        Specified by:
        executeUpdate in interface java.sql.PreparedStatement
        Returns:
        the update count (number of affected rows by a DML statement or other statement able to return number of rows, or 0 if no rows were affected or the statement returns nothing, or Statement.SUCCESS_NO_INFO if number of rows is too large for int data type)
        Throws:
        java.sql.SQLException - if this object is closed or invalid
        See Also:
        executeLargeUpdate()
      • executeLargeUpdate

        public long executeLargeUpdate()
                                throws java.sql.SQLException
        Executes a statement (insert, update, delete, create, drop) and returns the update count. If another result set exists for this statement, this will be closed (even if this statement fails). If auto commit is on, this statement will be committed. If the statement is a DDL statement (create, drop, alter) and does not throw an exception, the current transaction (if any) is committed after executing the statement.
        Specified by:
        executeLargeUpdate in interface java.sql.PreparedStatement
        Returns:
        the update count (number of affected rows by a DML statement or other statement able to return number of rows, or 0 if no rows were affected or the statement returns nothing)
        Throws:
        java.sql.SQLException - if this object is closed or invalid
      • executeUpdateInternal

        private long executeUpdateInternal()
      • execute

        public boolean execute()
                        throws java.sql.SQLException
        Executes an arbitrary statement. If another result set exists for this statement, this will be closed (even if this statement fails). If auto commit is on, and the statement is not a select, this statement will be committed.
        Specified by:
        execute in interface java.sql.PreparedStatement
        Returns:
        true if a result set is available, false if not
        Throws:
        java.sql.SQLException - if this object is closed or invalid
      • clearParameters

        public void clearParameters()
                             throws java.sql.SQLException
        Clears all parameters.
        Specified by:
        clearParameters in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException - if this object is closed or invalid
      • executeQuery

        public java.sql.ResultSet executeQuery​(java.lang.String sql)
                                        throws java.sql.SQLException
        Calling this method is not legal on a PreparedStatement.
        Specified by:
        executeQuery in interface java.sql.Statement
        Overrides:
        executeQuery in class JdbcStatement
        Parameters:
        sql - ignored
        Returns:
        the result set
        Throws:
        java.sql.SQLException - Unsupported Feature
      • addBatch

        public void addBatch​(java.lang.String sql)
                      throws java.sql.SQLException
        Calling this method is not legal on a PreparedStatement.
        Specified by:
        addBatch in interface java.sql.Statement
        Overrides:
        addBatch in class JdbcStatement
        Parameters:
        sql - ignored
        Throws:
        java.sql.SQLException - Unsupported Feature
      • setNull

        public void setNull​(int parameterIndex,
                            int sqlType)
                     throws java.sql.SQLException
        Sets a parameter to null.
        Specified by:
        setNull in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        sqlType - the data type (Types.x)
        Throws:
        java.sql.SQLException - if this object is closed
      • setInt

        public void setInt​(int parameterIndex,
                           int x)
                    throws java.sql.SQLException
        Sets the value of a parameter.
        Specified by:
        setInt in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setString

        public void setString​(int parameterIndex,
                              java.lang.String x)
                       throws java.sql.SQLException
        Sets the value of a parameter.
        Specified by:
        setString in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setBigDecimal

        public void setBigDecimal​(int parameterIndex,
                                  java.math.BigDecimal x)
                           throws java.sql.SQLException
        Sets the value of a parameter.
        Specified by:
        setBigDecimal in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setDate

        public void setDate​(int parameterIndex,
                            java.sql.Date x)
                     throws java.sql.SQLException
        Sets the value of a parameter.

        Usage of this method is discouraged. Use setObject(parameterIndex, value) with LocalDate parameter instead.

        Specified by:
        setDate in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
        See Also:
        setObject(int, Object)
      • setTime

        public void setTime​(int parameterIndex,
                            java.sql.Time x)
                     throws java.sql.SQLException
        Sets the value of a parameter.

        Usage of this method is discouraged. Use setObject(parameterIndex, value) with LocalTime parameter instead.

        Specified by:
        setTime in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
        See Also:
        setObject(int, Object)
      • setTimestamp

        public void setTimestamp​(int parameterIndex,
                                 java.sql.Timestamp x)
                          throws java.sql.SQLException
        Sets the value of a parameter.

        Usage of this method is discouraged. Use setObject(parameterIndex, value) with LocalDateTime parameter instead.

        Specified by:
        setTimestamp in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
        See Also:
        setObject(int, Object)
      • setObject

        public void setObject​(int parameterIndex,
                              java.lang.Object x)
                       throws java.sql.SQLException
        Sets the value of a parameter. Objects of unknown classes are serialized (on the client side).
        Specified by:
        setObject in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setObject

        public void setObject​(int parameterIndex,
                              java.lang.Object x,
                              int targetSqlType)
                       throws java.sql.SQLException
        Sets the value of a parameter. The object is converted, if required, to the specified data type before sending to the database. Objects of unknown classes are serialized (on the client side).
        Specified by:
        setObject in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value, null is allowed
        targetSqlType - the type as defined in java.sql.Types
        Throws:
        java.sql.SQLException - if this object is closed
      • setObject

        public void setObject​(int parameterIndex,
                              java.lang.Object x,
                              int targetSqlType,
                              int scale)
                       throws java.sql.SQLException
        Sets the value of a parameter. The object is converted, if required, to the specified data type before sending to the database. Objects of unknown classes are serialized (on the client side).
        Specified by:
        setObject in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value, null is allowed
        targetSqlType - the type as defined in java.sql.Types
        scale - is ignored
        Throws:
        java.sql.SQLException - if this object is closed
      • setObject

        public void setObject​(int parameterIndex,
                              java.lang.Object x,
                              java.sql.SQLType targetSqlType)
                       throws java.sql.SQLException
        Sets the value of a parameter. The object is converted, if required, to the specified data type before sending to the database. Objects of unknown classes are serialized (on the client side).
        Specified by:
        setObject in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value, null is allowed
        targetSqlType - the SQL type
        Throws:
        java.sql.SQLException - if this object is closed
      • setObject

        public void setObject​(int parameterIndex,
                              java.lang.Object x,
                              java.sql.SQLType targetSqlType,
                              int scaleOrLength)
                       throws java.sql.SQLException
        Sets the value of a parameter. The object is converted, if required, to the specified data type before sending to the database. Objects of unknown classes are serialized (on the client side).
        Specified by:
        setObject in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value, null is allowed
        targetSqlType - the SQL type
        scaleOrLength - is ignored
        Throws:
        java.sql.SQLException - if this object is closed
      • setObjectWithType

        private void setObjectWithType​(int parameterIndex,
                                       java.lang.Object x,
                                       int type)
      • setBoolean

        public void setBoolean​(int parameterIndex,
                               boolean x)
                        throws java.sql.SQLException
        Sets the value of a parameter.
        Specified by:
        setBoolean in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setByte

        public void setByte​(int parameterIndex,
                            byte x)
                     throws java.sql.SQLException
        Sets the value of a parameter.
        Specified by:
        setByte in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setShort

        public void setShort​(int parameterIndex,
                             short x)
                      throws java.sql.SQLException
        Sets the value of a parameter.
        Specified by:
        setShort in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setLong

        public void setLong​(int parameterIndex,
                            long x)
                     throws java.sql.SQLException
        Sets the value of a parameter.
        Specified by:
        setLong in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setFloat

        public void setFloat​(int parameterIndex,
                             float x)
                      throws java.sql.SQLException
        Sets the value of a parameter.
        Specified by:
        setFloat in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setDouble

        public void setDouble​(int parameterIndex,
                              double x)
                       throws java.sql.SQLException
        Sets the value of a parameter.
        Specified by:
        setDouble in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setRef

        public void setRef​(int parameterIndex,
                           java.sql.Ref x)
                    throws java.sql.SQLException
        [Not supported] Sets the value of a column as a reference.
        Specified by:
        setRef in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setDate

        public void setDate​(int parameterIndex,
                            java.sql.Date x,
                            java.util.Calendar calendar)
                     throws java.sql.SQLException
        Sets the date using a specified time zone. The value will be converted to the local time zone.

        Usage of this method is discouraged. Use setObject(parameterIndex, value) with LocalDate parameter instead.

        Specified by:
        setDate in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        calendar - the calendar
        Throws:
        java.sql.SQLException - if this object is closed
        See Also:
        setObject(int, Object)
      • setTime

        public void setTime​(int parameterIndex,
                            java.sql.Time x,
                            java.util.Calendar calendar)
                     throws java.sql.SQLException
        Sets the time using a specified time zone. The value will be converted to the local time zone.

        Usage of this method is discouraged. Use setObject(parameterIndex, value) with LocalTime parameter instead.

        Specified by:
        setTime in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        calendar - the calendar
        Throws:
        java.sql.SQLException - if this object is closed
        See Also:
        setObject(int, Object)
      • setTimestamp

        public void setTimestamp​(int parameterIndex,
                                 java.sql.Timestamp x,
                                 java.util.Calendar calendar)
                          throws java.sql.SQLException
        Sets the timestamp using a specified time zone. The value will be converted to the local time zone.

        Usage of this method is discouraged. Use setObject(parameterIndex, value) with LocalDateTime parameter instead.

        Specified by:
        setTimestamp in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        calendar - the calendar
        Throws:
        java.sql.SQLException - if this object is closed
        See Also:
        setObject(int, Object)
      • setUnicodeStream

        @Deprecated
        public void setUnicodeStream​(int parameterIndex,
                                     java.io.InputStream x,
                                     int length)
                              throws java.sql.SQLException
        Deprecated.
        since JDBC 2.0, use setCharacterStream
        [Not supported] This feature is deprecated and not supported.
        Specified by:
        setUnicodeStream in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setNull

        public void setNull​(int parameterIndex,
                            int sqlType,
                            java.lang.String typeName)
                     throws java.sql.SQLException
        Sets a parameter to null.
        Specified by:
        setNull in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        sqlType - the data type (Types.x)
        typeName - this parameter is ignored
        Throws:
        java.sql.SQLException - if this object is closed
      • setBlob

        public void setBlob​(int parameterIndex,
                            java.sql.Blob x)
                     throws java.sql.SQLException
        Sets the value of a parameter as a Blob.
        Specified by:
        setBlob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setBlob

        public void setBlob​(int parameterIndex,
                            java.io.InputStream x)
                     throws java.sql.SQLException
        Sets the value of a parameter as a Blob. This method does not close the stream. The stream may be closed after executing the statement.
        Specified by:
        setBlob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setClob

        public void setClob​(int parameterIndex,
                            java.sql.Clob x)
                     throws java.sql.SQLException
        Sets the value of a parameter as a Clob.
        Specified by:
        setClob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setClob

        public void setClob​(int parameterIndex,
                            java.io.Reader x)
                     throws java.sql.SQLException
        Sets the value of a parameter as a Clob. This method does not close the reader. The reader may be closed after executing the statement.
        Specified by:
        setClob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setArray

        public void setArray​(int parameterIndex,
                             java.sql.Array x)
                      throws java.sql.SQLException
        Sets the value of a parameter as an Array.
        Specified by:
        setArray in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setBytes

        public void setBytes​(int parameterIndex,
                             byte[] x)
                      throws java.sql.SQLException
        Sets the value of a parameter as a byte array.
        Specified by:
        setBytes in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setBinaryStream

        public void setBinaryStream​(int parameterIndex,
                                    java.io.InputStream x,
                                    long length)
                             throws java.sql.SQLException
        Sets the value of a parameter as an input stream. This method does not close the stream. The stream may be closed after executing the statement.
        Specified by:
        setBinaryStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        length - the maximum number of bytes
        Throws:
        java.sql.SQLException - if this object is closed
      • setBinaryStream

        public void setBinaryStream​(int parameterIndex,
                                    java.io.InputStream x,
                                    int length)
                             throws java.sql.SQLException
        Sets the value of a parameter as an input stream. This method does not close the stream. The stream may be closed after executing the statement.
        Specified by:
        setBinaryStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        length - the maximum number of bytes
        Throws:
        java.sql.SQLException - if this object is closed
      • setBinaryStream

        public void setBinaryStream​(int parameterIndex,
                                    java.io.InputStream x)
                             throws java.sql.SQLException
        Sets the value of a parameter as an input stream. This method does not close the stream. The stream may be closed after executing the statement.
        Specified by:
        setBinaryStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setAsciiStream

        public void setAsciiStream​(int parameterIndex,
                                   java.io.InputStream x,
                                   int length)
                            throws java.sql.SQLException
        Sets the value of a parameter as an ASCII stream. This method does not close the stream. The stream may be closed after executing the statement.
        Specified by:
        setAsciiStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        length - the maximum number of bytes
        Throws:
        java.sql.SQLException - if this object is closed
      • setAsciiStream

        public void setAsciiStream​(int parameterIndex,
                                   java.io.InputStream x,
                                   long length)
                            throws java.sql.SQLException
        Sets the value of a parameter as an ASCII stream. This method does not close the stream. The stream may be closed after executing the statement.
        Specified by:
        setAsciiStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        length - the maximum number of bytes
        Throws:
        java.sql.SQLException - if this object is closed
      • setAsciiStream

        public void setAsciiStream​(int parameterIndex,
                                   java.io.InputStream x)
                            throws java.sql.SQLException
        Sets the value of a parameter as an ASCII stream. This method does not close the stream. The stream may be closed after executing the statement.
        Specified by:
        setAsciiStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setCharacterStream

        public void setCharacterStream​(int parameterIndex,
                                       java.io.Reader x,
                                       int length)
                                throws java.sql.SQLException
        Sets the value of a parameter as a character stream. This method does not close the reader. The reader may be closed after executing the statement.
        Specified by:
        setCharacterStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        length - the maximum number of characters
        Throws:
        java.sql.SQLException - if this object is closed
      • setCharacterStream

        public void setCharacterStream​(int parameterIndex,
                                       java.io.Reader x)
                                throws java.sql.SQLException
        Sets the value of a parameter as a character stream. This method does not close the reader. The reader may be closed after executing the statement.
        Specified by:
        setCharacterStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setCharacterStream

        public void setCharacterStream​(int parameterIndex,
                                       java.io.Reader x,
                                       long length)
                                throws java.sql.SQLException
        Sets the value of a parameter as a character stream. This method does not close the reader. The reader may be closed after executing the statement.
        Specified by:
        setCharacterStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        length - the maximum number of characters
        Throws:
        java.sql.SQLException - if this object is closed
      • setURL

        public void setURL​(int parameterIndex,
                           java.net.URL x)
                    throws java.sql.SQLException
        [Not supported]
        Specified by:
        setURL in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • getMetaData

        public java.sql.ResultSetMetaData getMetaData()
                                               throws java.sql.SQLException
        Gets the result set metadata of the query returned when the statement is executed. If this is not a query, this method returns null.
        Specified by:
        getMetaData in interface java.sql.PreparedStatement
        Returns:
        the meta data or null if this is not a query
        Throws:
        java.sql.SQLException - if this object is closed
      • clearBatch

        public void clearBatch()
                        throws java.sql.SQLException
        Clears the batch.
        Specified by:
        clearBatch in interface java.sql.Statement
        Overrides:
        clearBatch in class JdbcStatement
        Throws:
        java.sql.SQLException
      • close

        public void close()
                   throws java.sql.SQLException
        Closes this statement. All result sets that where created by this statement become invalid after calling this method.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.sql.Statement
        Overrides:
        close in class JdbcStatement
        Throws:
        java.sql.SQLException
      • executeBatch

        public int[] executeBatch()
                           throws java.sql.SQLException
        Executes the batch. If one of the batched statements fails, this database will continue.
        Specified by:
        executeBatch in interface java.sql.Statement
        Overrides:
        executeBatch in class JdbcStatement
        Returns:
        the array of update counts
        Throws:
        java.sql.SQLException
        See Also:
        executeLargeBatch()
      • executeLargeBatch

        public long[] executeLargeBatch()
                                 throws java.sql.SQLException
        Executes the batch. If one of the batched statements fails, this database will continue.
        Specified by:
        executeLargeBatch in interface java.sql.Statement
        Overrides:
        executeLargeBatch in class JdbcStatement
        Returns:
        the array of update counts
        Throws:
        java.sql.SQLException
      • executeBatchElement

        private long executeBatchElement​(Value[] set,
                                         java.sql.SQLException exception)
      • getGeneratedKeys

        public java.sql.ResultSet getGeneratedKeys()
                                            throws java.sql.SQLException
        Description copied from class: JdbcStatement
        Return a result set with generated keys from the latest executed command or an empty result set if keys were not generated or were not requested with Statement.RETURN_GENERATED_KEYS, column indexes, or column names.

        Generated keys are only returned from from INSERT, UPDATE, MERGE INTO, and MERGE INTO ... USING commands.

        If SQL command inserts or updates multiple rows with generated keys each such inserted or updated row is returned. Batch methods are also supported.

        When Statement.RETURN_GENERATED_KEYS is used H2 chooses columns to return automatically. The following columns are chosen:

        • Columns with sequences including IDENTITY columns and columns with AUTO_INCREMENT.
        • Columns with other default values that are not evaluated into constant expressions (like DEFAULT RANDOM_UUID()).
        • Columns that are included into the PRIMARY KEY constraint.

        Exact required columns for the returning result set may be specified on execution of command with names or indexes of columns.

        Specified by:
        getGeneratedKeys in interface java.sql.Statement
        Overrides:
        getGeneratedKeys in class JdbcStatement
        Returns:
        the possibly empty result set with generated keys
        Throws:
        java.sql.SQLException - if this object is closed
      • addBatch

        public void addBatch()
                      throws java.sql.SQLException
        Adds the current settings to the batch.
        Specified by:
        addBatch in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • getParameterMetaData

        public java.sql.ParameterMetaData getParameterMetaData()
                                                        throws java.sql.SQLException
        Get the parameter meta data of this prepared statement.
        Specified by:
        getParameterMetaData in interface java.sql.PreparedStatement
        Returns:
        the meta data
        Throws:
        java.sql.SQLException
      • setParameter

        private void setParameter​(int parameterIndex,
                                  Value value)
      • setRowId

        public void setRowId​(int parameterIndex,
                             java.sql.RowId x)
                      throws java.sql.SQLException
        [Not supported] Sets the value of a parameter as a row id.
        Specified by:
        setRowId in interface java.sql.PreparedStatement
        Throws:
        java.sql.SQLException
      • setNString

        public void setNString​(int parameterIndex,
                               java.lang.String x)
                        throws java.sql.SQLException
        Sets the value of a parameter.
        Specified by:
        setNString in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setNCharacterStream

        public void setNCharacterStream​(int parameterIndex,
                                        java.io.Reader x,
                                        long length)
                                 throws java.sql.SQLException
        Sets the value of a parameter as a character stream. This method does not close the reader. The reader may be closed after executing the statement.
        Specified by:
        setNCharacterStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        length - the maximum number of characters
        Throws:
        java.sql.SQLException - if this object is closed
      • setNCharacterStream

        public void setNCharacterStream​(int parameterIndex,
                                        java.io.Reader x)
                                 throws java.sql.SQLException
        Sets the value of a parameter as a character stream. This method does not close the reader. The reader may be closed after executing the statement.
        Specified by:
        setNCharacterStream in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setNClob

        public void setNClob​(int parameterIndex,
                             java.sql.NClob x)
                      throws java.sql.SQLException
        Sets the value of a parameter as a Clob.
        Specified by:
        setNClob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setNClob

        public void setNClob​(int parameterIndex,
                             java.io.Reader x)
                      throws java.sql.SQLException
        Sets the value of a parameter as a Clob. This method does not close the reader. The reader may be closed after executing the statement.
        Specified by:
        setNClob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed
      • setClob

        public void setClob​(int parameterIndex,
                            java.io.Reader x,
                            long length)
                     throws java.sql.SQLException
        Sets the value of a parameter as a Clob. This method does not close the reader. The reader may be closed after executing the statement.
        Specified by:
        setClob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        length - the maximum number of characters
        Throws:
        java.sql.SQLException - if this object is closed
      • setBlob

        public void setBlob​(int parameterIndex,
                            java.io.InputStream x,
                            long length)
                     throws java.sql.SQLException
        Sets the value of a parameter as a Blob. This method does not close the stream. The stream may be closed after executing the statement.
        Specified by:
        setBlob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        length - the maximum number of bytes
        Throws:
        java.sql.SQLException - if this object is closed
      • setNClob

        public void setNClob​(int parameterIndex,
                             java.io.Reader x,
                             long length)
                      throws java.sql.SQLException
        Sets the value of a parameter as a Clob. This method does not close the reader. The reader may be closed after executing the statement.
        Specified by:
        setNClob in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        length - the maximum number of characters
        Throws:
        java.sql.SQLException - if this object is closed
      • setSQLXML

        public void setSQLXML​(int parameterIndex,
                              java.sql.SQLXML x)
                       throws java.sql.SQLException
        Sets the value of a parameter as a SQLXML.
        Specified by:
        setSQLXML in interface java.sql.PreparedStatement
        Parameters:
        parameterIndex - the parameter index (1, 2, ...)
        x - the value
        Throws:
        java.sql.SQLException - if this object is closed