@Override public void setReadOnly(boolean readOnly) throws SQLException { checkState(); conn.setReadOnly(readOnly); holder.setUnderlyingReadOnly(readOnly); }
@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; }
@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; }
@Override public void setHoldability(int holdability) throws SQLException { checkState(); conn.setHoldability(holdability); holder.setUnderlyingHoldability(holdability); }
@Override public void setTransactionIsolation(int level) throws SQLException { checkState(); conn.setTransactionIsolation(level); holder.setUnderlyingTransactionIsolation(level); }
@Override public void clearWarnings() throws SQLException { checkState(); try { conn.clearWarnings(); } catch (SQLException ex) { handleException(ex); } }
@Override public void releaseSavepoint(Savepoint savepoint) throws SQLException { checkState(); try { conn.releaseSavepoint(savepoint); } catch (SQLException ex) { handleException(ex); } }
@Override public void setCatalog(String catalog) throws SQLException { checkState(); try { conn.setCatalog(catalog); } catch (SQLException ex) { handleException(ex); } }
@Override public Savepoint setSavepoint(String name) throws SQLException { checkState(); try { return conn.setSavepoint(name); } catch (SQLException ex) { handleException(ex); return null; // never arrive } }
@Override public Clob createClob() throws SQLException { checkState(); try { return conn.createClob(); } catch (SQLException ex) { handleException(ex); return null; // never arrive } }
@Override public Savepoint setSavepoint() throws SQLException { checkState(); try { return conn.setSavepoint(); } catch (SQLException ex) { handleException(ex); return null; } }
@Override public void setAutoCommit(boolean autoCommit) throws SQLException { checkState(); try { conn.setAutoCommit(autoCommit); holder.setUnderlyingAutoCommit(autoCommit); } catch (SQLException ex) { handleException(ex); } }
public void test_checkOpen_error() throws Exception { DruidPooledConnection conn = dataSource.getConnection().unwrap(DruidPooledConnection.class); conn.close(); { Exception error = null; try { conn.checkState(); } catch (SQLException ex) { error = ex; } Assert.assertNotNull(error); } }
@Override public void setHoldability(int holdability) throws SQLException { checkState(); boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState(); if (useLocalSessionState) { if (holdability == holder.getUnderlyingHoldability()) { return; } } conn.setHoldability(holdability); holder.setUnderlyingHoldability(holdability); }
@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); } }
@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; }
@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); }
@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); } }
@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); }
@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; }
@Override public SQLWarning getWarnings() throws SQLException { checkState(); return conn.getWarnings(); }
@Override public NClob createNClob() throws SQLException { checkState(); return conn.createNClob(); }
@Override public boolean getAutoCommit() throws SQLException { checkState(); return conn.getAutoCommit(); }
@Override public int getHoldability() throws SQLException { checkState(); return conn.getHoldability(); }
@Override public boolean isReadOnly() throws SQLException { checkState(); return conn.isReadOnly(); }
@Override public void setTypeMap(Map<String, Class<?>> map) throws SQLException { checkState(); conn.setTypeMap(map); }
@Override public Map<String, Class<?>> getTypeMap() throws SQLException { checkState(); return conn.getTypeMap(); }
@Override public DatabaseMetaData getMetaData() throws SQLException { checkState(); return conn.getMetaData(); }
@Override public int getTransactionIsolation() throws SQLException { checkState(); return holder.getUnderlyingTransactionIsolation(); }
@Override public String getCatalog() throws SQLException { checkState(); return conn.getCatalog(); }