closeStatementAndConnection(statement);
closeStatement(statement); returnConnection(connection);
    public Iterator query(String sql) throws SQLException, IllegalAccessException, InstantiationException    {        Connection connection = borrowConnection();        Statement  statement  = null;        ResultSet  resultSet  = null;        Iterator   answer     = null;        try        {            statement = connection.createStatement();            resultSet = statement.executeQuery(sql);            answer    = createResultSetIterator(resultSet);            return answer;        }        finally        {            // if any exceptions are thrown, close things down            // otherwise we're leaving it open for the iterator            if (answer == null)            {                closeStatementAndConnection(statement);            }        }    }