/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.dbcp2;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;

import org.apache.commons.dbcp2.PoolingConnection.StatementType;

A key uniquely identifying PreparedStatements.
Since:2.0
/** * A key uniquely identifying {@link java.sql.PreparedStatement PreparedStatement}s. * * @since 2.0 */
public class PStmtKey {
Builder for prepareCall(String sql).
/** * Builder for prepareCall(String sql). */
private class PreparedCallSQL implements StatementBuilder { @Override public Statement createStatement(final Connection connection) throws SQLException { return connection.prepareCall(sql); } }
Builder for prepareCall(String sql, int resultSetType, int resultSetConcurrency).
/** * Builder for prepareCall(String sql, int resultSetType, int resultSetConcurrency). */
private class PreparedCallWithResultSetConcurrency implements StatementBuilder { @Override public Statement createStatement(final Connection connection) throws SQLException { return connection.prepareCall(sql, resultSetType.intValue(), resultSetConcurrency.intValue()); } }
Builder for prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability).
/** * Builder for prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability). */
private class PreparedCallWithResultSetHoldability implements StatementBuilder { @Override public Statement createStatement(final Connection connection) throws SQLException { return connection.prepareCall(sql, resultSetType.intValue(), resultSetConcurrency.intValue(), resultSetHoldability.intValue()); } }
Builder for prepareStatement(String sql).
/** * Builder for prepareStatement(String sql). */
private class PreparedStatementSQL implements StatementBuilder { @Override public Statement createStatement(final Connection connection) throws SQLException { return connection.prepareStatement(sql); } }
Builder for prepareStatement(String sql, int autoGeneratedKeys).
/** * Builder for prepareStatement(String sql, int autoGeneratedKeys). */
private class PreparedStatementWithAutoGeneratedKeys implements StatementBuilder { @Override public Statement createStatement(final Connection connection) throws SQLException { return connection.prepareStatement(sql, autoGeneratedKeys.intValue()); } }
Builder for prepareStatement(String sql, int[] columnIndexes).
/** * Builder for prepareStatement(String sql, int[] columnIndexes). */
private class PreparedStatementWithColumnIndexes implements StatementBuilder { @Override public Statement createStatement(final Connection connection) throws SQLException { return connection.prepareStatement(sql, columnIndexes); } }
Builder for prepareStatement(String sql, String[] columnNames).
/** * Builder for prepareStatement(String sql, String[] columnNames). */
private class PreparedStatementWithColumnNames implements StatementBuilder { @Override public Statement createStatement(final Connection connection) throws SQLException { return connection.prepareStatement(sql, columnNames); } }
Builder for prepareStatement(String sql, int resultSetType, int resultSetConcurrency).
/** * Builder for prepareStatement(String sql, int resultSetType, int resultSetConcurrency). */
private class PreparedStatementWithResultSetConcurrency implements StatementBuilder { @Override public Statement createStatement(final Connection connection) throws SQLException { return connection.prepareStatement(sql, resultSetType.intValue(), resultSetConcurrency.intValue()); } }
Builder for prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability).
/** * Builder for prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability). */
private class PreparedStatementWithResultSetHoldability implements StatementBuilder { @Override public Statement createStatement(final Connection connection) throws SQLException { return connection.prepareStatement(sql, resultSetType.intValue(), resultSetConcurrency.intValue(), resultSetHoldability.intValue()); } }
Interface for Prepared or Callable Statement.
/** * Interface for Prepared or Callable Statement. */
private interface StatementBuilder { Statement createStatement(Connection connection) throws SQLException; }
SQL defining Prepared or Callable Statement
/** * SQL defining Prepared or Callable Statement */
private final String sql;
Result set type; one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE.
/** * Result set type; one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, * or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>. */
private final Integer resultSetType;
Result set concurrency. A concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE.
/** * Result set concurrency. A concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code>. */
private final Integer resultSetConcurrency;
Result set holdability. One of the following ResultSet constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT.
/** * Result set holdability. One of the following <code>ResultSet</code> constants: * <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> or <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code>. */
private final Integer resultSetHoldability;
Database catalog.
/** Database catalog. */
private final String catalog;
Database schema.
/** Database schema. */
private final String schema;
A flag indicating whether auto-generated keys should be returned; one of Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYS.
/** * A flag indicating whether auto-generated keys should be returned; one of * <code>Statement.RETURN_GENERATED_KEYS</code> or <code>Statement.NO_GENERATED_KEYS</code>. */
private final Integer autoGeneratedKeys;
An array of column indexes indicating the columns that should be returned from the inserted row or rows.
/** * An array of column indexes indicating the columns that should be returned from the inserted row or rows. */
private final int[] columnIndexes;
An array of column names indicating the columns that should be returned from the inserted row or rows.
/** * An array of column names indicating the columns that should be returned from the inserted row or rows. */
private final String[] columnNames;
Statement type, prepared or callable.
/** * Statement type, prepared or callable. */
private final StatementType statementType;
Statement builder
/** Statement builder */
private transient StatementBuilder builder;
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
Deprecated:Use PStmtKey(String, String, String).
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @deprecated Use {@link #PStmtKey(String, String, String)}. */
@Deprecated public PStmtKey(final String sql) { this(sql, null, StatementType.PREPARED_STATEMENT); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • resultSetType – A result set type; one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE.
  • resultSetConcurrency – A concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE.
Deprecated:Use PStmtKey(String, String, String, int, int).
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param resultSetType * A result set type; one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>. * @param resultSetConcurrency * A concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code>. * @deprecated Use {@link #PStmtKey(String, String, String, int, int)}. */
@Deprecated public PStmtKey(final String sql, final int resultSetType, final int resultSetConcurrency) { this(sql, null, resultSetType, resultSetConcurrency, StatementType.PREPARED_STATEMENT); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
Deprecated:Use PStmtKey(String, String, String).
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @deprecated Use {@link #PStmtKey(String, String, String)}. */
@Deprecated public PStmtKey(final String sql, final String catalog) { this(sql, catalog, StatementType.PREPARED_STATEMENT); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • autoGeneratedKeys – A flag indicating whether auto-generated keys should be returned; one of Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYS.
Deprecated:Use PStmtKey(String, String, String, int).
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param autoGeneratedKeys * A flag indicating whether auto-generated keys should be returned; one of * <code>Statement.RETURN_GENERATED_KEYS</code> or <code>Statement.NO_GENERATED_KEYS</code>. * @deprecated Use {@link #PStmtKey(String, String, String, int)}. */
@Deprecated public PStmtKey(final String sql, final String catalog, final int autoGeneratedKeys) { this(sql, catalog, StatementType.PREPARED_STATEMENT, Integer.valueOf(autoGeneratedKeys)); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • resultSetType – A result set type; one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE.
  • resultSetConcurrency – A concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE.
Deprecated:Use @link PStmtKey(String, String, String, int, int).
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param resultSetType * A result set type; one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>. * @param resultSetConcurrency * A concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code>. * @deprecated Use @link {@link #PStmtKey(String, String, String, int, int)}. */
@Deprecated public PStmtKey(final String sql, final String catalog, final int resultSetType, final int resultSetConcurrency) { this(sql, catalog, resultSetType, resultSetConcurrency, StatementType.PREPARED_STATEMENT); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • resultSetType – a result set type; one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE.
  • resultSetConcurrency – A concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE
  • resultSetHoldability – One of the following ResultSet constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT.
Deprecated:Use PStmtKey(String, String, String, int, int, int).
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param resultSetType * a result set type; one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>. * @param resultSetConcurrency * A concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code> * @param resultSetHoldability * One of the following <code>ResultSet</code> constants: <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> * or <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code>. * @deprecated Use {@link #PStmtKey(String, String, String, int, int, int)}. */
@Deprecated public PStmtKey(final String sql, final String catalog, final int resultSetType, final int resultSetConcurrency, final int resultSetHoldability) { this(sql, catalog, resultSetType, resultSetConcurrency, resultSetHoldability, StatementType.PREPARED_STATEMENT); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • resultSetType – a result set type; one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE
  • resultSetConcurrency – A concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE.
  • resultSetHoldability – One of the following ResultSet constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT.
  • statementType – The SQL statement type, prepared or callable.
Deprecated:Use PStmtKey(String, String, String, int, int, int, StatementType)
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param resultSetType * a result set type; one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> * @param resultSetConcurrency * A concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code>. * @param resultSetHoldability * One of the following <code>ResultSet</code> constants: <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> * or <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code>. * @param statementType * The SQL statement type, prepared or callable. * @deprecated Use {@link #PStmtKey(String, String, String, int, int, int, PoolingConnection.StatementType)} */
@Deprecated public PStmtKey(final String sql, final String catalog, final int resultSetType, final int resultSetConcurrency, final int resultSetHoldability, final StatementType statementType) { this.sql = sql; this.catalog = catalog; this.schema = null; this.resultSetType = Integer.valueOf(resultSetType); this.resultSetConcurrency = Integer.valueOf(resultSetConcurrency); this.resultSetHoldability = Integer.valueOf(resultSetHoldability); this.statementType = statementType; this.autoGeneratedKeys = null; this.columnIndexes = null; this.columnNames = null; // create builder if (statementType == StatementType.PREPARED_STATEMENT) { this.builder = new PreparedStatementWithResultSetHoldability(); } else if (statementType == StatementType.CALLABLE_STATEMENT) { this.builder = new PreparedCallWithResultSetHoldability(); } }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • resultSetType – A result set type; one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE.
  • resultSetConcurrency – A concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE.
  • statementType – The SQL statement type, prepared or callable.
Deprecated:Use PStmtKey(String, String, String, int, int, StatementType).
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param resultSetType * A result set type; one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>. * @param resultSetConcurrency * A concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code>. * @param statementType * The SQL statement type, prepared or callable. * @deprecated Use {@link #PStmtKey(String, String, String, int, int, PoolingConnection.StatementType)}. */
@Deprecated public PStmtKey(final String sql, final String catalog, final int resultSetType, final int resultSetConcurrency, final StatementType statementType) { this.sql = sql; this.catalog = catalog; this.schema = null; this.resultSetType = Integer.valueOf(resultSetType); this.resultSetConcurrency = Integer.valueOf(resultSetConcurrency); this.resultSetHoldability = null; this.statementType = statementType; this.autoGeneratedKeys = null; this.columnIndexes = null; this.columnNames = null; // create builder if (statementType == StatementType.PREPARED_STATEMENT) { this.builder = new PreparedStatementWithResultSetConcurrency(); } else if (statementType == StatementType.CALLABLE_STATEMENT) { this.builder = new PreparedCallWithResultSetConcurrency(); } }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • columnIndexes – An array of column indexes indicating the columns that should be returned from the inserted row or rows.
Deprecated:Use PStmtKey(String, String, String, int[]).
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param columnIndexes * An array of column indexes indicating the columns that should be returned from the inserted row or * rows. * @deprecated Use {@link #PStmtKey(String, String, String, int[])}. */
@Deprecated public PStmtKey(final String sql, final String catalog, final int[] columnIndexes) { this.sql = sql; this.catalog = catalog; this.schema = null; this.statementType = StatementType.PREPARED_STATEMENT; this.autoGeneratedKeys = null; this.columnIndexes = columnIndexes == null ? null : Arrays.copyOf(columnIndexes, columnIndexes.length); this.columnNames = null; this.resultSetType = null; this.resultSetConcurrency = null; this.resultSetHoldability = null; // create builder this.builder = new PreparedStatementWithColumnIndexes(); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • statementType – The SQL statement type, prepared or callable.
Deprecated:Use PStmtKey(String, String, String, StatementType).
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param statementType * The SQL statement type, prepared or callable. * @deprecated Use {@link #PStmtKey(String, String, String, PoolingConnection.StatementType)}. */
@Deprecated public PStmtKey(final String sql, final String catalog, final StatementType statementType) { this.sql = sql; this.catalog = catalog; this.schema = null; this.statementType = statementType; this.autoGeneratedKeys = null; this.columnIndexes = null; this.columnNames = null; this.resultSetType = null; this.resultSetConcurrency = null; this.resultSetHoldability = null; // create builder if (statementType == StatementType.PREPARED_STATEMENT) { this.builder = new PreparedStatementSQL(); } else if (statementType == StatementType.CALLABLE_STATEMENT) { this.builder = new PreparedCallSQL(); } }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • statementType – The SQL statement type, prepared or callable.
  • autoGeneratedKeys – A flag indicating whether auto-generated keys should be returned; one of Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYS.
Deprecated:Use PStmtKey(String, String, String, StatementType, Integer)
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param statementType * The SQL statement type, prepared or callable. * @param autoGeneratedKeys * A flag indicating whether auto-generated keys should be returned; one of * <code>Statement.RETURN_GENERATED_KEYS</code> or <code>Statement.NO_GENERATED_KEYS</code>. * @deprecated Use {@link #PStmtKey(String, String, String, PoolingConnection.StatementType, Integer)} */
@Deprecated public PStmtKey(final String sql, final String catalog, final StatementType statementType, final Integer autoGeneratedKeys) { this.sql = sql; this.catalog = catalog; this.schema = null; this.statementType = statementType; this.autoGeneratedKeys = autoGeneratedKeys; this.columnIndexes = null; this.columnNames = null; this.resultSetType = null; this.resultSetConcurrency = null; this.resultSetHoldability = null; // create builder if (statementType == StatementType.PREPARED_STATEMENT) { this.builder = new PreparedStatementWithAutoGeneratedKeys(); } else if (statementType == StatementType.CALLABLE_STATEMENT) { this.builder = new PreparedCallSQL(); } }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • schema – The schema
Since:2.5.0
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param schema * The schema * @since 2.5.0 */
public PStmtKey(final String sql, final String catalog, final String schema) { this(sql, catalog, schema, StatementType.PREPARED_STATEMENT); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • schema – The schema
  • autoGeneratedKeys – A flag indicating whether auto-generated keys should be returned; one of Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYS.
Since:2.5.0
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param schema * The schema * @param autoGeneratedKeys * A flag indicating whether auto-generated keys should be returned; one of * <code>Statement.RETURN_GENERATED_KEYS</code> or <code>Statement.NO_GENERATED_KEYS</code>. * @since 2.5.0 */
public PStmtKey(final String sql, final String catalog, final String schema, final int autoGeneratedKeys) { this(sql, catalog, schema, StatementType.PREPARED_STATEMENT, Integer.valueOf(autoGeneratedKeys)); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • schema – The schema
  • resultSetType – A result set type; one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE.
  • resultSetConcurrency – A concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE.
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param schema * The schema * @param resultSetType * A result set type; one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>. * @param resultSetConcurrency * A concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code>. */
public PStmtKey(final String sql, final String catalog, final String schema, final int resultSetType, final int resultSetConcurrency) { this(sql, catalog, schema, resultSetType, resultSetConcurrency, StatementType.PREPARED_STATEMENT); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • schema – The schema
  • resultSetType – a result set type; one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE.
  • resultSetConcurrency – A concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE
  • resultSetHoldability – One of the following ResultSet constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT.
Since:2.5.0
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param schema * The schema * @param resultSetType * a result set type; one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>. * @param resultSetConcurrency * A concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code> * @param resultSetHoldability * One of the following <code>ResultSet</code> constants: <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> * or <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code>. * @since 2.5.0 */
public PStmtKey(final String sql, final String catalog, final String schema, final int resultSetType, final int resultSetConcurrency, final int resultSetHoldability) { this(sql, catalog, schema, resultSetType, resultSetConcurrency, resultSetHoldability, StatementType.PREPARED_STATEMENT); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • schema – The schema.
  • resultSetType – a result set type; one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE
  • resultSetConcurrency – A concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE.
  • resultSetHoldability – One of the following ResultSet constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT.
  • statementType – The SQL statement type, prepared or callable.
Since:2.5.0
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param schema * The schema. * @param resultSetType * a result set type; one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> * @param resultSetConcurrency * A concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code>. * @param resultSetHoldability * One of the following <code>ResultSet</code> constants: <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> * or <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code>. * @param statementType * The SQL statement type, prepared or callable. * @since 2.5.0 */
public PStmtKey(final String sql, final String catalog, final String schema, final int resultSetType, final int resultSetConcurrency, final int resultSetHoldability, final StatementType statementType) { this.sql = sql; this.catalog = catalog; this.schema = schema; this.resultSetType = Integer.valueOf(resultSetType); this.resultSetConcurrency = Integer.valueOf(resultSetConcurrency); this.resultSetHoldability = Integer.valueOf(resultSetHoldability); this.statementType = statementType; this.autoGeneratedKeys = null; this.columnIndexes = null; this.columnNames = null; // create builder if (statementType == StatementType.PREPARED_STATEMENT) { this.builder = new PreparedStatementWithResultSetHoldability(); } else if (statementType == StatementType.CALLABLE_STATEMENT) { this.builder = new PreparedCallWithResultSetHoldability(); } }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • schema – The schema.
  • resultSetType – A result set type; one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE.
  • resultSetConcurrency – A concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE.
  • statementType – The SQL statement type, prepared or callable.
Since:2.5.0
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param schema * The schema. * @param resultSetType * A result set type; one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>. * @param resultSetConcurrency * A concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code>. * @param statementType * The SQL statement type, prepared or callable. * @since 2.5.0 */
public PStmtKey(final String sql, final String catalog, final String schema, final int resultSetType, final int resultSetConcurrency, final StatementType statementType) { this.sql = sql; this.catalog = catalog; this.schema = schema; this.resultSetType = Integer.valueOf(resultSetType); this.resultSetConcurrency = Integer.valueOf(resultSetConcurrency); this.resultSetHoldability = null; this.statementType = statementType; this.autoGeneratedKeys = null; this.columnIndexes = null; this.columnNames = null; // create builder if (statementType == StatementType.PREPARED_STATEMENT) { this.builder = new PreparedStatementWithResultSetConcurrency(); } else if (statementType == StatementType.CALLABLE_STATEMENT) { this.builder = new PreparedCallWithResultSetConcurrency(); } }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • schema – The schema.
  • columnIndexes – An array of column indexes indicating the columns that should be returned from the inserted row or rows.
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param schema * The schema. * @param columnIndexes * An array of column indexes indicating the columns that should be returned from the inserted row or * rows. */
public PStmtKey(final String sql, final String catalog, final String schema, final int[] columnIndexes) { this.sql = sql; this.catalog = catalog; this.schema = schema; this.statementType = StatementType.PREPARED_STATEMENT; this.autoGeneratedKeys = null; this.columnIndexes = columnIndexes == null ? null : Arrays.copyOf(columnIndexes, columnIndexes.length); this.columnNames = null; this.resultSetType = null; this.resultSetConcurrency = null; this.resultSetHoldability = null; // create builder this.builder = new PreparedStatementWithColumnIndexes(); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • schema – The schema.
  • statementType – The SQL statement type, prepared or callable.
Since:2.5.0
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param schema * The schema. * @param statementType * The SQL statement type, prepared or callable. * @since 2.5.0 */
public PStmtKey(final String sql, final String catalog, final String schema, final StatementType statementType) { this.sql = sql; this.catalog = catalog; this.schema = schema; this.statementType = statementType; this.autoGeneratedKeys = null; this.columnIndexes = null; this.columnNames = null; this.resultSetType = null; this.resultSetConcurrency = null; this.resultSetHoldability = null; // create builder if (statementType == StatementType.PREPARED_STATEMENT) { this.builder = new PreparedStatementSQL(); } else if (statementType == StatementType.CALLABLE_STATEMENT) { this.builder = new PreparedCallSQL(); } }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • schema – The schema.
  • statementType – The SQL statement type, prepared or callable.
  • autoGeneratedKeys – A flag indicating whether auto-generated keys should be returned; one of Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYS.
Since:2.5.0
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param schema * The schema. * @param statementType * The SQL statement type, prepared or callable. * @param autoGeneratedKeys * A flag indicating whether auto-generated keys should be returned; one of * <code>Statement.RETURN_GENERATED_KEYS</code> or <code>Statement.NO_GENERATED_KEYS</code>. * @since 2.5.0 */
public PStmtKey(final String sql, final String catalog, final String schema, final StatementType statementType, final Integer autoGeneratedKeys) { this.sql = sql; this.catalog = catalog; this.schema = schema; this.statementType = statementType; this.autoGeneratedKeys = autoGeneratedKeys; this.columnIndexes = null; this.columnNames = null; this.resultSetType = null; this.resultSetConcurrency = null; this.resultSetHoldability = null; // create builder if (statementType == StatementType.PREPARED_STATEMENT) { this.builder = new PreparedStatementWithAutoGeneratedKeys(); } else if (statementType == StatementType.CALLABLE_STATEMENT) { this.builder = new PreparedCallSQL(); } }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • schema – The schema.
  • columnNames – An array of column names indicating the columns that should be returned from the inserted row or rows.
Since:2.5.0
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param schema * The schema. * @param columnNames * An array of column names indicating the columns that should be returned from the inserted row or rows. * @since 2.5.0 */
public PStmtKey(final String sql, final String catalog, final String schema, final String[] columnNames) { this.sql = sql; this.catalog = catalog; this.schema = schema; this.statementType = StatementType.PREPARED_STATEMENT; this.autoGeneratedKeys = null; this.columnIndexes = null; this.columnNames = columnNames == null ? null : Arrays.copyOf(columnNames, columnNames.length); this.resultSetType = null; this.resultSetConcurrency = null; this.resultSetHoldability = null; // create builder builder = new PreparedStatementWithColumnNames(); }
Constructs a key to uniquely identify a prepared statement.
Params:
  • sql – The SQL statement.
  • catalog – The catalog.
  • columnNames – An array of column names indicating the columns that should be returned from the inserted row or rows.
Deprecated:Use PStmtKey(String, String, String, String[]).
/** * Constructs a key to uniquely identify a prepared statement. * * @param sql * The SQL statement. * @param catalog * The catalog. * @param columnNames * An array of column names indicating the columns that should be returned from the inserted row or rows. * @deprecated Use {@link #PStmtKey(String, String, String, String[])}. */
@Deprecated public PStmtKey(final String sql, final String catalog, final String[] columnNames) { this.sql = sql; this.catalog = catalog; this.schema = null; this.statementType = StatementType.PREPARED_STATEMENT; this.autoGeneratedKeys = null; this.columnIndexes = null; this.columnNames = columnNames == null ? null : Arrays.copyOf(columnNames, columnNames.length); this.resultSetType = null; this.resultSetConcurrency = null; this.resultSetHoldability = null; // create builder builder = new PreparedStatementWithColumnNames(); }
Creates a new Statement from the given Connection.
Params:
  • connection – The Connection to use to create the statement.
Throws:
  • SQLException – Thrown when there is a problem creating the statement.
Returns:The statement.
/** * Creates a new Statement from the given Connection. * * @param connection * The Connection to use to create the statement. * @return The statement. * @throws SQLException * Thrown when there is a problem creating the statement. */
public Statement createStatement(final Connection connection) throws SQLException { if (builder == null) { throw new IllegalStateException("Prepared statement key is invalid."); } return builder.createStatement(connection); } @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final PStmtKey other = (PStmtKey) obj; if (autoGeneratedKeys == null) { if (other.autoGeneratedKeys != null) { return false; } } else if (!autoGeneratedKeys.equals(other.autoGeneratedKeys)) { return false; } if (catalog == null) { if (other.catalog != null) { return false; } } else if (!catalog.equals(other.catalog)) { return false; } if (!Arrays.equals(columnIndexes, other.columnIndexes)) { return false; } if (!Arrays.equals(columnNames, other.columnNames)) { return false; } if (resultSetConcurrency == null) { if (other.resultSetConcurrency != null) { return false; } } else if (!resultSetConcurrency.equals(other.resultSetConcurrency)) { return false; } if (resultSetHoldability == null) { if (other.resultSetHoldability != null) { return false; } } else if (!resultSetHoldability.equals(other.resultSetHoldability)) { return false; } if (resultSetType == null) { if (other.resultSetType != null) { return false; } } else if (!resultSetType.equals(other.resultSetType)) { return false; } if (schema == null) { if (other.schema != null) { return false; } } else if (!schema.equals(other.schema)) { return false; } if (sql == null) { if (other.sql != null) { return false; } } else if (!sql.equals(other.sql)) { return false; } if (statementType != other.statementType) { return false; } return true; }
Gets a flag indicating whether auto-generated keys should be returned; one of Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYS.
Returns:a flag indicating whether auto-generated keys should be returned.
/** * Gets a flag indicating whether auto-generated keys should be returned; one of * <code>Statement.RETURN_GENERATED_KEYS</code> or <code>Statement.NO_GENERATED_KEYS</code>. * * @return a flag indicating whether auto-generated keys should be returned. */
public Integer getAutoGeneratedKeys() { return autoGeneratedKeys; }
The catalog.
Returns:The catalog.
/** * The catalog. * * @return The catalog. */
public String getCatalog() { return catalog; }
Gets an array of column indexes indicating the columns that should be returned from the inserted row or rows.
Returns:An array of column indexes.
/** * Gets an array of column indexes indicating the columns that should be returned from the inserted row or rows. * * @return An array of column indexes. */
public int[] getColumnIndexes() { return columnIndexes; }
Gets an array of column names indicating the columns that should be returned from the inserted row or rows.
Returns:An array of column names.
/** * Gets an array of column names indicating the columns that should be returned from the inserted row or rows. * * @return An array of column names. */
public String[] getColumnNames() { return columnNames; }
Gets the result set concurrency type; one of ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE.
Returns:The result set concurrency type.
/** * Gets the result set concurrency type; one of <code>ResultSet.CONCUR_READ_ONLY</code> or * <code>ResultSet.CONCUR_UPDATABLE</code>. * * @return The result set concurrency type. */
public Integer getResultSetConcurrency() { return resultSetConcurrency; }
Gets the result set holdability, one of the following ResultSet constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT.
Returns:The result set holdability.
/** * Gets the result set holdability, one of the following <code>ResultSet</code> constants: * <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> or <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code>. * * @return The result set holdability. */
public Integer getResultSetHoldability() { return resultSetHoldability; }
Gets the result set type, one of ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE.
Returns:the result set type.
/** * Gets the result set type, one of <code>ResultSet.TYPE_FORWARD_ONLY</code>, * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>. * * @return the result set type. */
public Integer getResultSetType() { return resultSetType; }
The schema.
Returns:The catalog.
/** * The schema. * * @return The catalog. */
public String getSchema() { return schema; }
Gets the SQL statement.
Returns:the SQL statement.
/** * Gets the SQL statement. * * @return the SQL statement. */
public String getSql() { return sql; }
The SQL statement type.
Returns:The SQL statement type.
/** * The SQL statement type. * * @return The SQL statement type. */
public StatementType getStmtType() { return statementType; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((autoGeneratedKeys == null) ? 0 : autoGeneratedKeys.hashCode()); result = prime * result + ((catalog == null) ? 0 : catalog.hashCode()); result = prime * result + Arrays.hashCode(columnIndexes); result = prime * result + Arrays.hashCode(columnNames); result = prime * result + ((resultSetConcurrency == null) ? 0 : resultSetConcurrency.hashCode()); result = prime * result + ((resultSetHoldability == null) ? 0 : resultSetHoldability.hashCode()); result = prime * result + ((resultSetType == null) ? 0 : resultSetType.hashCode()); result = prime * result + ((schema == null) ? 0 : schema.hashCode()); result = prime * result + ((sql == null) ? 0 : sql.hashCode()); result = prime * result + ((statementType == null) ? 0 : statementType.hashCode()); return result; } @Override public String toString() { final StringBuffer buf = new StringBuffer(); buf.append("PStmtKey: sql="); buf.append(sql); buf.append(", catalog="); buf.append(catalog); buf.append(", schema="); buf.append(schema); buf.append(", resultSetType="); buf.append(resultSetType); buf.append(", resultSetConcurrency="); buf.append(resultSetConcurrency); buf.append(", resultSetHoldability="); buf.append(resultSetHoldability); buf.append(", autoGeneratedKeys="); buf.append(autoGeneratedKeys); buf.append(", columnIndexes="); buf.append(Arrays.toString(columnIndexes)); buf.append(", columnNames="); buf.append(Arrays.toString(columnNames)); buf.append(", statementType="); buf.append(statementType); return buf.toString(); } }