Exibir uma Lista nos JTextField

6 respostas
D

Estou com o seguinte problema, tenho uma classe tela onde o Usuario passa o ID para fazer a consulta, esse ID é passado para a Classe DAO onde é feito o Select no Banco e armazenado em uma Lista e devolvo essa Lista para a classe Tela onde terei que exibir esses dados em um JTextField, mas n esta exibindo . Se alguem puder me ajudar … Obrigado

Classe DAO

public List<Cliente> getlist(Cliente cliente2) throws SQLException{
		
				
		List <Cliente> clientes = new ArrayList<Cliente>();
 			
     	        Id = ((Cliente) cliente2).getId();
		
				
		String sql="Select * from Cadastro Where ID=" + Id + "";
		
		PreparedStatement st = con.prepareStatement(sql);
		
		ResultSet rs = st.executeQuery();
		
		
		while ( rs.next() ){
			
				Cliente cliente = new Cliente();
			
			
								
				cliente.setNome(rs.getString	 ("NOME"      ));
				cliente.setSobrenome(rs.getString("SOBRENOME" ));
				cliente.setEnd(rs.getString      ("END"       ));
				cliente.setNum(rs.getInt	     ("NUM"       ));
				cliente.setCidade(rs.getString   ("CIDADE"    ));
				cliente.setEstado(rs.getString   ("ESTADO"    ));
				cliente.setCep(rs.getString	     ("CEP"       ));
				cliente.setNasc(rs.getString	 ("NASCIMENTO"));
				cliente.setCpf(rs.getString	     ("CPF"       ));
				cliente.setRg(rs.getString		 ("RG"        ));
		
		
				clientes.add(cliente);
				
		}
		
		
		
		rs.close();
		st.close();
		con.close();
		
		return clientes;
	}

Classe Tela

auxId = Long.parseLong(texto_Id.getText());
							    							    
							    Cliente cliente = new Cliente();
							  						   
							  	cliente.setId(auxId);
							  	
								
								
								try {
									  
										
										ClienteDAO dao = new ClienteDAO();
										
										dao.getlist(cliente);	
										
										texto_nome.setEnabled(true);
										texto_nome.setText(cliente.getNome());
										
										texto_sobrenome.setEnabled(true);
										texto_sobrenome.setText(cliente.getSobrenome());
										
										texto_end.setEnabled(true);
										texto_end.setText(cliente.getEnd());
										
										texto_num.setEnabled(true);
										texto_num.setText(""+cliente.getNum());
										
										texto_cidade.setEnabled(true);
										texto_cidade.setText(cliente.getCidade());
										
										texto_estado.setEnabled(true);
										texto_estado.setText(cliente.getEstado());
										
										texto_cep.setEnabled(true);
										texto_cep.setText(cliente.getCep());
										
										texto_nascimento.setEnabled(true);
										texto_nascimento.setText(cliente.getNasc());
										
										texto_cpf.setEnabled(true);
										texto_cpf.setText(cliente.getCpf());
										
										texto_rg.setEnabled(true);
										texto_rg.setText(cliente.getRg());

6 Respostas

T

O erro não está na exibição da tela e sim na busca dos dados.

Nesta linha

Você busca uma lista de clientes através de um objeto cliente que tem um determinado ID
Porém você não utiliza 1 elemento da lista que retornou para colocar nos textfiles, vc colocou o próprio objeto cliente que utilizou para chamar o método.
Só que o objeto cliente não tem nenhum outro dado senão o próprio Id que vc colokou para chamar o método.

Modifique isso e pegue o 1 elemento da lista e coloque nos textfields.

D

Eu havia pensado nisso msmo, mas n sabia como mudar … Seria correto estanciar outro objeto da classe Cliente e receber o que estou passando para da DAO ?
Tipo …

Cliente cliente1 = new Cliente();
ClienteDAO dao = new ClienteDAO();

cliente1 = dao.getlist(cliente); 

 texto_nome.setEnabled(true);  
texto_nome.setText(cliente1.getNome());
T

O Correto seria o método não retornar uma lista e sim 1 objeto Cliente

Desta Forma:

public Cliente getClienteById(Long id) throws SQLException{  
           
                   
         Cliente cliente = new Cliente();                        
         String sql="Select * from Cadastro Where ID=" + id + "";             
         PreparedStatement st = con.prepareStatement(sql);             
         ResultSet rs = st.executeQuery();  
           
           
         if ( rs.next() ){        
                                   
                 cliente.setNome(rs.getString     ("NOME"      ));  
                 cliente.setSobrenome(rs.getString("SOBRENOME" ));  
                 cliente.setEnd(rs.getString      ("END"       ));  
                 cliente.setNum(rs.getInt         ("NUM"       ));  
                 cliente.setCidade(rs.getString   ("CIDADE"    ));  
                 cliente.setEstado(rs.getString   ("ESTADO"    ));  
                 cliente.setCep(rs.getString      ("CEP"       ));  
                 cliente.setNasc(rs.getString     ("NASCIMENTO"));  
                 cliente.setCpf(rs.getString      ("CPF"       ));  
                 cliente.setRg(rs.getString       ("RG"        ));  
           
           
                
                            }  
                  
           
         rs.close();  
         st.close();  
         con.close();  
           
         return cliente;  
     }

E na chamada do método faça assim

cliente = dao.getClienteById( cliente.getId() );

E Pronto!

M

Você não precisa passar um Cliente para o método, basta passar um int que é o ID.

O ID é primary key? Se for, basta retornar um Cliente (e não um List).

E o modo correto de se usar PreparedStatement é:

String sql="Select * from Cadastro Where ID=?";
		
		PreparedStatement st = con.prepareStatement(sql);

		st.setInt(id);
		
		ResultSet rs = st.executeQuery();
D

Opa … Agora esta retornando, mas surgiu outro problema tenho alguns campos formatado …

CEP, NASCIMENTO, CPF, E RG

Os campos CEP e NASCIMENTO são exibidos normalmente, mas o CPF e RG não estao sendo exibidos, porem eles são trazidos no select normalmente pois ja testei usando uma variavel aux na Classe DAO …

O que pode ser ?

D

Ae galera resolvi … Apenas tirei a formatação dos campos e exibiu td …
Valeu pela força !!

Criado 18 de fevereiro de 2010
Ultima resposta 18 de fev. de 2010
Respostas 6
Participantes 3