Método para converter um ResultSet em um ArrayList

5 respostas
luciano_castilho

Olá a todos e feliz 2005!

Qual é a melhor maneira para migrar os dados de um ResultSet para um ArrayList?
Estou fazendo isso com um laço, porém acredito que exista um modo mais otimizado/elegante para executar essa tarefa.

Agradeço suas opniões.

5 Respostas

jgbt

converter de rs p/ arraylist eu não conheço, mas tem uma classe da commoms-collections que converte o rs p/ um bean, se as colunas forem as mesmas, e ai no laço vc adiciona na collection o bean…acho que ja fica mais elegante…

[]'s

_fs
int columns = rsmd.getColumnCount();
List result = new ArrayList();
while( rs.next )
{
    Object[] row = new Object[ columns ];
    for( int i = 0; i < columns.length; i++ )
        row[ i ] = rs.get( i + 1 );

    result.add( row );
}

Acho que deve ter algum jeito meis chique.

pcalcado

A melhor maneira é transformar seu resultset em objetos e colocá-los na Collection.

Um ResultSet não deve nunca passar a fronteira da camada de persistência. Você pode fazer em casos onde velocidade é muito importante, mas só em último caso, e após tentar do jeito OO e não obter performance satisfatória.

Resumindo: a menos que você tenha um gargalo aqui, trabalhe com objetos, não structs :wink:

[]s

_fs

shoes tá coberto de razão :smiley:

Fora o caso de performance que ele citou, um jeito bem mais fácil, natural e elegante seria algo como:

List pessoas = new ArrayList();
while( rs.next )
{
    Pessoa p = new Pessoa();
    p.setNome( rs.getString( "nome" ) );
    p.setCpf( rs.getString( "cpf" ) );
    p.setFoto( rs.getBytes( "foto" ) );

    pessoas.add( p );
}

Neste caso a sugestão do jgbt é bastante conveniente :smiley:

luciano_castilho

Ok pessoal, obrigado pelos comentários.
Creio que não estou fazendo tão errado assim, pois meu código esta quase igual ao postado no 2º post do LIPE.

Valeu!

Criado 3 de janeiro de 2005
Ultima resposta 4 de jan. de 2005
Respostas 5
Participantes 4