Duplicando Registro em LIST

1 resposta
leosjcti

Galera estou fazendo um teste aqui em uma base de dados… e os dados da minha lista estão vindo repetidos… sendo que nao há repetição…
alguem poderia me ajudar?

package br.com.conexao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import br.com.modelo.UsuarioBean;

public class TestaConexao {

	
	public List<UsuarioBean> getUsuarios(){
		
		ConnectionFactory conexao = new ConnectionFactory();
		List<UsuarioBean> usuarios = new ArrayList<UsuarioBean>();
		UsuarioBean usuario= new UsuarioBean();
		try {
			Statement stmt = conexao.conn.createStatement();
			String sql = "select * from usuario";
			
			ResultSet rs = stmt.executeQuery(sql);
			while(rs.next()){
				usuario.setNome(rs.getString("nome"));
				usuarios.add(usuario);
			}
			
		return usuarios;
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return usuarios;
		
	}
	
	
	public static void main(String[] args) {
		
		TestaConexao teste = new TestaConexao();
		UsuarioBean usuarios = new UsuarioBean();
		
		List<UsuarioBean> usuario = teste.getUsuarios();
		for (UsuarioBean x : usuario) {
			System.out.println(x.getNome());
		}
	}

}

valeu galera

1 Resposta

romarcio
O problema está no seu código. Você deve inicializar um usuário novo a cada loop.
public List&lt;UsuarioBean&gt; getUsuarios(){  
          
        ConnectionFactory conexao = new ConnectionFactory();  
        List&lt;UsuarioBean&gt; usuarios = new ArrayList&lt;UsuarioBean&gt;();  
        UsuarioBean usuario = null;  
        try {  
            Statement stmt = conexao.conn.createStatement();  
            String sql = "select * from usuario";  
              
            ResultSet rs = stmt.executeQuery(sql);  
            while(rs.next()){  
                usuario = new UsuarioBean();
                usuario.setNome(rs.getString("nome"));  
                usuarios.add(usuario);  
            }  
              
        return usuarios;  
              
        } catch (SQLException e) {  
            e.printStackTrace();  
        }  
        return usuarios;  
          
}
Criado 4 de outubro de 2011
Ultima resposta 4 de out. de 2011
Respostas 1
Participantes 2