Como retornar todos os contatos da tabela MySQL num tela Java?

6 respostas Resolvido
javamysql
V

Fala, pessoal.

Tô com um projeto Agenda em Java e MySQL, na qual tenho um objeto Contatos, tendo os atributos
nome, telefone, email, endereço… etc
e a tabela no banco de dados, contendo os mesmos atributos.
Na tela agenda, eu gostaria que quando abri-la, retornar todos os registros da tabela do banco.

Como eu poderia fazer isso? Tentei fazer um ArrayList, mas não funcionou.

public ArrayList  percorreSelect(Connection conexao) throws SQLException {

ArrayList lista = new ArrayList<>();

String sqlPercorre = select id, nome, telefone, email, rua, numero, cidade, bairro, estado from contatos;

try (PreparedStatement pst = conexao.prepareStatement(sqlPercorre);

ResultSet rs = pst.executeQuery()) {

while (rs.next()) {

lista.add(new Contatos(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5)

, rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9)));
}
		} catch (Exception e) {}
		
	
}

===================================================
Eu tenho um método de consultar, porém, ela me retorna apenas um por um, queria que retornassem todos os registros da tabela numa tela só

Abaixo o método consultar que retorna um registro por vez.

public void consultar(Connection conexao) {

//Contatos contatos = new Contatos();

TelaAbrirAgenda telaabrir = new TelaAbrirAgenda(conexao);

String sql = select * from contatos where nome = ?;

try {

PreparedStatement pst = conexao.prepareStatement(sql);

pst.setString(1,  txtBuscar.getText());

// a linha abaixo executa a query

ResultSet rs = pst.executeQuery();

//se existir o nome cadastrado

if (rs.next()) {

<a href="//contatos.toString">//contatos.toString</a>();
System.out.println
			   		  ("Nome: " + rs.getString(2) + 
					   "\nTelefone: " + rs.getString(3) + 
					   "\nEmail: " + rs.getString(4) + 
					   "\nEndereço: " + rs.getString(5) + rs.getString(6) + rs.getString(7) + rs.getString(8)+
					   " \n-------------------------------------- ");
			   			
			  
			   //telaabrir.lblResultado.setText(rs.getString(2));
			   //telaabrir.lblResultado2.setText(rs.getString(3));
			   //telaabrir.lblResultado3.setText(rs.getString(4));
			  Neste trecho, eu seto os label com as informações que vem do banco, gostaria de saber se tem algum jeito mais efetivo de fazer isso também rs


		   } else {
			   JOptionPane.showMessageDialog(null,"Não  este contato cadastrado.");
		   }
		   
		   
	   }
	   catch (Exception e ) {
		   telaabrir.lblResultado.setText(" Deu erro!"
	   + "\n " + e);
	   }
   }

Obrigado a todos.

6 Respostas

D
Solucao aceita

Trabalhando com objetos não funciona?

Tipo:

String sql = select * from contatos;  //Select para retornar todos
 while (rs.next()) {
    Contato c = new Contrato();
     c.setId(rs.getInt(1));
     c.setNome(rs.getstring(2))
     //Seta aqui o restante dos atrbutos
    lista.add(c); 
 }
D

Daí você retorna esta lista no método e captura os get dos atributos na tela.

V

Opa! Resolveu meu problema. Desta maneira funcionou, muito obrigado, amigo!

V

Tem uma sugestão de como retornar estes dados em uma tela? sem ser no console.

D

Como você ta trabalhando com desktop eu nao sei bem, mas basicamente avcredito que a classe da tela vai chamar o dao e este dao vai retornar esta lista de objetos, então você teria que dar um jeito de criar uma tabela na interface e popular esta tabela com os gets dos atributos.

V

A estratégia é essa mesmo. Já criei uma lista retornando estes objetos e tá funcionando por System.out. Porém, preciso colocar esta tabela na interface mas nao sei como

Criado 27 de novembro de 2018
Ultima resposta 30 de nov. de 2018
Respostas 6
Participantes 2