Problemas com o arrayList

2 respostas
Sidneyassis

Ae galera é o seguinte…deem uma olhada nesse código.

public static ArrayList<Cliente> buscaTodosClientes(){
		ArrayList<Cliente> clientes = new ArrayList<Cliente>();
		Cliente cliente = new Cliente();
		try{	
			System.out.println("Verificando os Dados de Todos os clientes.");
			String query = "SELECT * FROM clientes;";
			//System.out.println(query);
			Statement s = con.createStatement();			
			ResultSet rs= s.executeQuery(query);
			int i = 0; 
			while(rs.next()){
				
				cliente.setNome(rs.getString("Nome"));
				cliente.setRg(Integer.parseInt(rs.getString("RG")));
				cliente.setEndereco(rs.getString("Endereco"));
				cliente.setEMail(rs.getString("Email"));
				cliente.setTelefone(Integer.parseInt(rs.getString("Telefone")));
				clientes.add(i, cliente); <--------
				System.out.println(i);
				i = i +1;				
			}
			for(int teste = 0; teste< clientes.size(); teste++){
				clientes.get(teste).imprimiDadosCliente();<-----
			}
            }

O problema nesse código é que ele não esta guardando no arrayList todos os objetos do tipo Cliente, ele apenas guarda o ultimo, eu até poderia usar Vetor, mas o problema e que eu não sei quantos clientes vão ter na base de dados…por isso queria usar o arraylist…

Valeu!!!

2 Respostas

andreiribas

instancia um novo cliente a cada interação, senão fica sendo sempre uma mesma instância.

public static ArrayList<Cliente> buscaTodosClientes(){
 		ArrayList<Cliente> clientes = new ArrayList<Cliente>();
 		Cliente cliente;
 		try{	
 			System.out.println("Verificando os Dados de Todos os clientes.");
 			String query = "SELECT * FROM clientes;";
 			//System.out.println(query);
 			Statement s = con.createStatement();			
 			ResultSet rs= s.executeQuery(query);
 			int i = 0; 
 			while(rs.next()){
 				cliente =  = new Cliente();
 				cliente.setNome(rs.getString("Nome"));
 				cliente.setRg(Integer.parseInt(rs.getString("RG")));
 				cliente.setEndereco(rs.getString("Endereco"));
 				cliente.setEMail(rs.getString("Email"));
 				cliente.setTelefone(Integer.parseInt(rs.getString("Telefone")));
 				clientes.add(i, cliente); <--------
 				System.out.println(i);
 				i = i +1;				
 			}
 			for(int teste = 0; teste< clientes.size(); teste++){
 				clientes.get(teste).imprimiDadosCliente();<-----
 			}
             }
felipedamiani

Sidneyassis:
Ae galera é o seguinte…deem uma olhada nesse código.

public static ArrayList<Cliente> buscaTodosClientes(){
		ArrayList<Cliente> clientes = new ArrayList<Cliente>();
		Cliente cliente = new Cliente();
		try{	
			System.out.println("Verificando os Dados de Todos os clientes.");
			String query = "SELECT * FROM clientes;";
			//System.out.println(query);
			Statement s = con.createStatement();			
			ResultSet rs= s.executeQuery(query);
			int i = 0; 
			while(rs.next()){
				
				cliente.setNome(rs.getString("Nome"));
				cliente.setRg(Integer.parseInt(rs.getString("RG")));
				cliente.setEndereco(rs.getString("Endereco"));
				cliente.setEMail(rs.getString("Email"));
				cliente.setTelefone(Integer.parseInt(rs.getString("Telefone")));
				clientes.add(i, cliente); <--------
				System.out.println(i);
				i = i +1;				
			}
			for(int teste = 0; teste< clientes.size(); teste++){
				clientes.get(teste).imprimiDadosCliente();<-----
			}
            }

O problema nesse código é que ele não esta guardando no arrayList todos os objetos do tipo Cliente, ele apenas guarda o ultimo, eu até poderia usar Vetor, mas o problema e que eu não sei quantos clientes vão ter na base de dados…por isso queria usar o arraylist…

Valeu!!!

clientes.add(cliente);

Criado 1 de agosto de 2007
Ultima resposta 2 de ago. de 2007
Respostas 2
Participantes 3