コード例 #1
0
  @Override
  public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency)
      throws SQLException {
    checkState();

    PreparedStatementHolder stmtHolder = null;
    PreparedStatementKey key =
        new PreparedStatementKey(
            sql, getCatalog(), MethodType.Precall_3, resultSetType, resultSetConcurrency);

    boolean poolPreparedStatements = holder.isPoolPreparedStatements();

    if (poolPreparedStatements) {
      stmtHolder = holder.getStatementPool().get(key);
    }

    if (stmtHolder == null) {
      try {
        stmtHolder =
            new PreparedStatementHolder(
                key, conn.prepareCall(sql, resultSetType, resultSetConcurrency));
        holder.getDataSource().incrementPreparedStatementCount();
      } catch (SQLException ex) {
        handleException(ex);
      }
    }

    initStatement(stmtHolder);

    DruidPooledCallableStatement rtnVal = new DruidPooledCallableStatement(this, stmtHolder);
    holder.addTrace(rtnVal);

    return rtnVal;
  }
コード例 #2
0
  @Override
  public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException {
    checkState();

    PreparedStatementKey key =
        new PreparedStatementKey(sql, getCatalog(), MethodType.M6, autoGeneratedKeys);
    PreparedStatementHolder stmtHolder = null;

    boolean poolPreparedStatements = holder.isPoolPreparedStatements();

    if (poolPreparedStatements) {
      stmtHolder = holder.getStatementPool().get(key);
    }

    if (stmtHolder == null) {
      try {
        stmtHolder =
            new PreparedStatementHolder(key, conn.prepareStatement(sql, autoGeneratedKeys));
        holder.getDataSource().incrementPreparedStatementCount();
      } catch (SQLException ex) {
        handleException(ex);
      }
    }

    initStatement(stmtHolder);

    DruidPooledPreparedStatement rtnVal = new DruidPooledPreparedStatement(this, stmtHolder);

    holder.addTrace(rtnVal);

    return rtnVal;
  }
コード例 #3
0
 @Override
 public void releaseSavepoint(Savepoint savepoint) throws SQLException {
   checkState();
   try {
     conn.releaseSavepoint(savepoint);
   } catch (SQLException ex) {
     handleException(ex);
   }
 }
コード例 #4
0
 @Override
 public void clearWarnings() throws SQLException {
   checkState();
   try {
     conn.clearWarnings();
   } catch (SQLException ex) {
     handleException(ex);
   }
 }
コード例 #5
0
  @Override
  public void setCatalog(String catalog) throws SQLException {
    checkState();

    try {
      conn.setCatalog(catalog);
    } catch (SQLException ex) {
      handleException(ex);
    }
  }
コード例 #6
0
  public void test_handleException() throws Exception {
    DruidPooledConnection conn = (DruidPooledConnection) dataSource.getConnection();
    conn.close();

    SQLException error = new SQLException();
    try {
      conn.handleException(error);
    } catch (SQLException ex) {
      Assert.assertEquals(error, ex);
    }
  }
コード例 #7
0
  @Override
  public Clob createClob() throws SQLException {
    checkState();

    try {
      return conn.createClob();
    } catch (SQLException ex) {
      handleException(ex);
      return null; // never arrive
    }
  }
コード例 #8
0
  @Override
  public void setAutoCommit(boolean autoCommit) throws SQLException {
    checkState();

    try {
      conn.setAutoCommit(autoCommit);
      holder.setUnderlyingAutoCommit(autoCommit);
    } catch (SQLException ex) {
      handleException(ex);
    }
  }
コード例 #9
0
  @Override
  public Savepoint setSavepoint(String name) throws SQLException {
    checkState();

    try {
      return conn.setSavepoint(name);
    } catch (SQLException ex) {
      handleException(ex);
      return null; // never arrive
    }
  }
コード例 #10
0
  @Override
  public Savepoint setSavepoint() throws SQLException {
    checkState();

    try {
      return conn.setSavepoint();
    } catch (SQLException ex) {
      handleException(ex);
      return null;
    }
  }
コード例 #11
0
  @Override
  public void commit() throws SQLException {
    checkState();

    DruidAbstractDataSource dataSource = holder.getDataSource();
    dataSource.incrementCommitCount();

    try {
      conn.commit();
    } catch (SQLException ex) {
      handleException(ex);
    } finally {
      handleEndTransaction(dataSource, null);
    }
  }
コード例 #12
0
  public void test_handleException_2() throws Exception {
    DruidPooledConnection conn = dataSource.getConnection().unwrap(DruidPooledConnection.class);
    conn.getConnection().close();

    {
      SQLException error = null;
      try {
        conn.handleException(new RuntimeException());
      } catch (SQLException ex) {
        error = ex;
      }
      Assert.assertNotNull(error);
    }

    conn.close();
  }
コード例 #13
0
  @Override
  public void rollback(Savepoint savepoint) throws SQLException {
    if (holder == null) {
      return;
    }

    DruidAbstractDataSource dataSource = holder.getDataSource();
    dataSource.incrementRollbackCount();

    try {
      conn.rollback(savepoint);
    } catch (SQLException ex) {
      handleException(ex);
    } finally {
      handleEndTransaction(dataSource, savepoint);
    }
  }
コード例 #14
0
  @Override
  public void setTransactionIsolation(int level) throws SQLException {
    checkState();

    boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState();
    if (useLocalSessionState) {
      if (level == holder.getUnderlyingTransactionIsolation()) {
        return;
      }
    }

    try {
      conn.setTransactionIsolation(level);
    } catch (SQLException ex) {
      handleException(ex);
    }
    holder.setUnderlyingTransactionIsolation(level);
  }
コード例 #15
0
  @Override
  public Statement createStatement() throws SQLException {
    checkState();

    Statement stmt = null;
    try {
      stmt = conn.createStatement();
    } catch (SQLException ex) {
      handleException(ex);
    }

    holder.getDataSource().initStatement(this, stmt);

    DruidPooledStatement poolableStatement = new DruidPooledStatement(this, stmt);
    holder.addTrace(poolableStatement);

    return poolableStatement;
  }
コード例 #16
0
  @Override
  public void setReadOnly(boolean readOnly) throws SQLException {
    checkState();

    boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState();
    if (useLocalSessionState) {
      if (readOnly == holder.isUnderlyingReadOnly()) {
        return;
      }
    }

    try {
      conn.setReadOnly(readOnly);
    } catch (SQLException ex) {
      handleException(ex);
    }

    holder.setUnderlyingReadOnly(readOnly);
  }
コード例 #17
0
  @Override
  public Statement createStatement(
      int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
    checkState();

    Statement stmt = null;
    try {
      stmt = conn.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability);
    } catch (SQLException ex) {
      handleException(ex);
    }

    holder.getDataSource().initStatement(this, stmt);

    DruidPooledStatement poolableStatement = new DruidPooledStatement(this, stmt);
    holder.addTrace(poolableStatement);

    return poolableStatement;
  }
コード例 #18
0
  @Override
  public void setAutoCommit(boolean autoCommit) throws SQLException {
    checkState();

    boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState();

    if (useLocalSessionState) {
      if (autoCommit == holder.isUnderlyingAutoCommit()) {
        return;
      }
    }

    try {
      conn.setAutoCommit(autoCommit);
      holder.setUnderlyingAutoCommit(autoCommit);
    } catch (SQLException ex) {
      handleException(ex);
    }
  }
コード例 #19
0
  public void test_handleException_5() throws Exception {
    DruidPooledConnection conn = dataSource.getConnection().unwrap(DruidPooledConnection.class);
    conn.addConnectionEventListener(
        new ConnectionEventListener() {

          @Override
          public void connectionClosed(ConnectionEvent event) {}

          @Override
          public void connectionErrorOccurred(ConnectionEvent event) {}
        });
    conn.close();

    {
      SQLException error = null;
      try {
        conn.handleException(new RuntimeException());
      } catch (SQLException ex) {
        error = ex;
      }
      Assert.assertNotNull(error);
    }
  }