Pessoal, o que vou fazer agora, algum v�o me xingar, mas n�o vejo outra
maneira.

        Cara Adelina e Hederson, notei v�rios problemas, e vou enumer�-los
abaixo.


"Adelina A. Sesconetto Borges" wrote:
> 
>     Oi Hederson!
> 
>                     Resolvi este problema fazendo o meu retorno ser do tipo
> vector.

        Quem usar a sua api, espera um objeto que possa navegar sobre eles, no
caso mais simples o proprio java.sql.ResultSet serve. Se colocar um
vetor, deve-se dizer em algum lugar a estrat�gia adotada (sua mensagem
abaixo)
        

>                     Se o acesso ao banco tiver erros eu armazeno no primeiro
> elemento do vector  uma string com o erro, se der ok no primeiro elemento do
> vector  eu armazeno o result set. Caso voc� queira o c�digo que faz isso mande-me
> uma mensagem.

        Aqui existe uma estrat�gia bastante duvidosa, pois os clientes da api
dever�o saber o que significa o 1o elemento, e o seu cliente dever� ter
o seguinte c�digo.


Vector result = consulta("Joao Silva");
Object o = result.get(0);
if (o instanceof String) {
    // erro
    String mensagemErro = (String) o;
} else if (o instanceof ResultSet) {
    ResultSet resultSet = (ResultSet) o;
    // navegar no result;
}
// Neste momento existe um vetor que n�o serve pra nada!!!!!!!

        Al�m do mais, usar Vector deliberadamente � um erro, pois Vector � uma
classe sincronizada, todo o acesso � sincronizado, pode-se usar um
ArrayList (Vector e ArrayList s�o wrappers para arrays)


    Abaixo continuo o coment�rio do Hederson, com uma solu��o simples.

        SOLU��O AO FIM...
 
>                                     Adelina
> 
> HEDERSON wrote:
> 
> > Ola Pessoal,
> >         Eu criei um metodo que retorna um objeto do Java.sql.resultset. Dentro
> > deste m�todo eu faco uma consulta em algumas tabelas do banco de dados e
> > retorno o resultado utilizando o java.sql.resultset. O problema � que na
> > hora de tratar os erros eu nao tenho como retornar
> > um valor do tipo java.sql.resultset, como eu resolvo isto?



> >  private  java.sql.ResultSet  consultarTiporesposta(String paramDescricao)
> > throws SQLException, Exception {

   SQLException e Exception j� est�o declaradas, pra que colocar o catch
abaixo?
   
   Lan�ar java.lang.Exception n�o � uma boa, pois os clientes da api,
dever�o capturar java.lang.Exception sem sentido. Coloque em uma
AppException (uma classe de excess�o criada por voc�) se for necess�rio.

> >       Connection Cn;
> >       String StrSQL;
> >       PreparedStatement pstmt;
> >       ResultSet Rs;
> >       int qtdRegistro;
> >       try {
> >           Banco Bd = new Banco();
> >           Cn =
> > Bd.Conectar("COM.ibm.db2.jdbc.app.DB2Driver","jdbc:db2:simulado","db2admin",
> > "db2admin");

        Pra que uma classe Banco, sendo que toda a conex�o,usuario/senha �
resolvido aqui???
        Use o DriverManager.getConnection

> >           Statement stmt = Cn.createStatement();
> >           stmt.execute("set schema = db2admin");
> >           StrSQL = " Select pCodigo,pDescricao,pAtivo,pDesabilitarQuestoes "
> > +
> >                    " from TipoResposta where pDescricao like % " +
> > paramDescricao + "%";
> >           pstmt = Cn.prepareStatement(StrSQL);
> >           Rs = pstmt.executeQuery(StrSQL);
> >           stmt.close();
> >           pstmt.close();
> >           Cn.close();

        Se ocorrer algum erro (na execu��o da query por exemplo), o fluxo �
interrompido e os objetos n�o s�o liberados (conex�o, resultset,
statement)

        Coloque-os em uma cl�usula finally.

> >           return Rs;
> >        }
> >         catch (java.sql.SQLException e) {
> >           System.out.print(Integer.toString(e.getErrorCode()) + "-" +
> > e.getMessage());

     Decida se voc� quer capturar ou lan�ar a excess�o!
     N�o � boa pr�tica capturar E lan�ar a MESMA excess�o.

> >           ??? Como retornar um valor do tipo java.sql.resultset?
> >        }

------------------------------------------------------

Com a solu��o abaixo (n�o compilei, provavelmente deve ter algum erro,
mas o importante � a id�ia), seu cliente pode usar da seguinte forma

//
//      c�digo do cliente da api
//
try {
  // colocar em bloco try/catch por causa do MyAppException e porque
voc� quer capturar alguma mensagem SE algo der errado

    ResultSet result = consultarTiporesposta("Joao Silva");
    if (result == null) {
        // algum erro que a SQLException nao capturou
        // decida como trat�-lo
    }
} catch (MyAppException appexcp) {
   // agora sim, voc� tem a memsagem de erro, olhe a classe
MyAppExcepion.minhaMensagem();
   // que voc� pode utilizar do jeito que bem entender.
}

// 
//      api de acesso ao bd
//
private  java.sql.ResultSet  consultarTiporesposta(String
paramDescricao) throws MyAppException {
      Connection connection = null;
      PreparedStatement pstmt = null;
      ResultSet rs = null;

      try {
          connection = getConnection();
          Statement stmt = connection.createStatement();
          stmt.execute("set schema = db2admin");
          String strSQL = " Select
pCodigo,pDescricao,pAtivo,pDesabilitarQuestoes "
                                + " from TipoResposta where pDescricao like % " 
                                + paramDescricao + "%";
          pstmt = connection.prepareStatement(strSQL);
          rs = pstmt.executeQuery(strSQL);
       } catch (java.sql.SQLException sqle) {
                throw new MyAppException("Nao foi possivel executar a consulta
ao tipo de resposta, por favor bla bla bla...", sqle);
       } finally {
                close(rs);
                close(stmt);
                close(connection);
       }
       return rs;
}

class MyAppException extends Exception {

        SQLException sqle;

        public MyAppException(String message, SQLException sqle) {
                super(message);
                this.sqle = sqle;
        }
        
        public void printStackTrace() {
                super.printStackTrace();
                sqle.printStackTrace();
        }
        
        public String minhaMensagem() {
                // implemente algum metodo setMensagemAdicional
                // para coloar algum outro tipo de mensagem
                return "Sua mensagem formatada do jeito que quiser!";
        }

}

void close(Connection conn) {
        if (conn != null) {
                conn.close();
        }
}

void close(Statement stmt) {
        if (stmt != null) {
                stmt.close();
        }
}

void close(ResultSet rs) {
        if (rs != null) {
                rs.close();
        }
}

Connection getConnection() {
        Connection conn = null;
        try {
                conn =
DriverManager.getConnection("COM.ibm.db2.jdbc.app.DB2Driver","jdbc:db2:simulado","db2admin",
"db2admin");
        } catch (ClassNotFoundException cnfe) {
                cnfe.printStackTrace();
        }
        return conn;
}

_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP 
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a