Dados do BD no jTextField

4 respostas
G
package dao;

import factory.ConnectionFactory;
import modelo.Usuario;
import gui.AtualizarGUI;
import java.sql.*;
import java.sql.PreparedStatement;

public class ConsultaDAO {

    private Connection connection;
    Long id;
    String nome;
    String cpf;
    String email;
    String telefone;
    String end;

    public ConsultaDAO() {
        this.connection = new ConnectionFactory().getConnection();
    }
      

    public void consulta(Usuario usuario) {
        
     
        
        String sql = "SELECT * FROM usuario WHERE cpf=?";
        

        try {

            PreparedStatement stmt = connection.prepareStatement(sql);
          stmt.setString(1, usuario.getCpf());
            ResultSet rs = stmt.executeQuery();
            rs.next();
     
  
            String cpf = rs.getString("cpf");
            String nome = rs.getString("nome");
            String telefone = rs.getString("telefone");
            String end = rs.getString("endereco");
            String email = rs.getString("email");
            
            jTextField1.setText(nome);
            jTextField2.setText(cpf);
            jTextField3.setText(telefone);
            jTextField4.setText(end);
            jTextField5.setText(email);
            
            rs.close();
            stmt.close();
            
            
        } catch (SQLException u) {
            throw new RuntimeException(u);
        }
    }
}

Poderiam me ajudar?

4 Respostas

B

Tá dando algum erro? O que está acontecendo? Explique melhor o problema.

Vamos lá, o que pode ser mudado nesse seu código:

Você tem um método chamado consulta, que busca um Usuário pelo cpf. O tipo do retorno, é void, você poderia fazer esse método retornar um Usuario, e receber em outro lugar.
tente dividir seu projeto em pacotes, onde conexões com banco de dados ficam em um pacote, regras de negócios em outro, interfaces/gui e etc em outros.

public Usuario consulta(Usuario usuario) {  
        Usuario u = null/
        String sql = "SELECT * FROM usuario WHERE cpf=?";  
          
  
        try {  
  
            PreparedStatement stmt = connection.prepareStatement(sql);  
          stmt.setString(1, usuario.getCpf());  
            ResultSet rs = stmt.executeQuery();  

          if (rs.next()){ //verifica se realmente existe algo no ResultSet, ou seja, se retornou algum registro.
		u = new Usuario();
		u.setCpf(rs.getString("cpf"));
		u.setNome(rs.getString("nome"));
		u.setTelefone(rs.getString("telefone"));
		u.setEnd(rs.getString("endereco"));
		u.setEmail(rs.getString("email"));
          }
          
              
            rs.close();  
            stmt.close();  
              
              
        } catch (SQLException ex) {  
		ex.printStackTrace();
  
        } finally {
		  //fechamento de conexão sempre no finally, pois independente se deu erro ou não, vai cair e fechar.
            rs.close();  
            stmt.close();  
              
        } 
    }

	return u;  
}

Na chamada do método, faça dessa forma:

Usuario usuario = new ClasseOndeEstaMetodo().consulta("passar o usuario aqui");

//usar setText aqui
campo1.setText(usuario.getCpf());
G

bomba544:
Tá dando algum erro? O que está acontecendo? Explique melhor o problema.

Vamos lá, o que pode ser mudado nesse seu código:

Você tem um método chamado consulta, que busca um Usuário pelo cpf. O tipo do retorno, é void, você poderia fazer esse método retornar um Usuario, e receber em outro lugar.
tente dividir seu projeto em pacotes, onde conexões com banco de dados ficam em um pacote, regras de negócios em outro, interfaces/gui e etc em outros.

public Usuario consulta(Usuario usuario) {  
        Usuario u = null/
        String sql = "SELECT * FROM usuario WHERE cpf=?";  
          
  
        try {  
  
            PreparedStatement stmt = connection.prepareStatement(sql);  
          stmt.setString(1, usuario.getCpf());  
            ResultSet rs = stmt.executeQuery();  

          if (rs.next()){ //verifica se realmente existe algo no ResultSet, ou seja, se retornou algum registro.
		u = new Usuario();
		u.setCpf(rs.getString("cpf"));
		u.setNome(rs.getString("nome"));
		u.setTelefone(rs.getString("telefone"));
		u.setEnd(rs.getString("endereco"));
		u.setEmail(rs.getString("email"));
          }
          
              
            rs.close();  
            stmt.close();  
              
              
        } catch (SQLException ex) {  
		ex.printStackTrace();
  
        } finally {
		  //fechamento de conexão sempre no finally, pois independente se deu erro ou não, vai cair e fechar.
            rs.close();  
            stmt.close();  
              
        } 
    }

	return u;  
}

Na chamada do método, faça dessa forma:

Usuario usuario = new ClasseOndeEstaMetodo().consulta("passar o usuario aqui");

//usar setText aqui
campo1.setText(usuario.getCpf());

Assim, esta tela seria uma tela com 5 jTextField ( nome, cpf (pk), email, telefone, endereço), 1 jTextArea(descricao) e 2 jComboBox (tipo e disponi).

Ao digitar o CPF e clicar no botão “dados”, ele pega os dados no BD e aparece nos jTextFields, e aí o usuário escolhe o que vai querer atualizar do cliente.

MUITO obrigado pela ajuda Bomba544

B

Como te falei, sua divida seu projeto em pacotes.
gui - telas
dao - Classes que comunicam com o banco de dados
(Só exemplo. Procure por padrões de projeto)

No pacote DAO, crie uma classe chamada, por exemplo, UsuarioDAO.
Quando for clicar no botão, faça a chamada como falei ali, pegando o retorno na própria tela.

Usuario usuario = new UsuarioDAO().consulta("passar usuario aqui");

//colocar setText abaixo.
G
bomba544:
Como te falei, sua divida seu projeto em pacotes. gui - telas dao - Classes que comunicam com o banco de dados (Só exemplo. Procure por padrões de projeto) No pacote DAO, crie uma classe chamada, por exemplo, UsuarioDAO. Quando for clicar no botão, faça a chamada como falei ali, pegando o retorno na própria tela.
Usuario usuario = new UsuarioDAO().consulta("passar usuario aqui");

//colocar setText abaixo.

Fiz a divisão e está assim.

dao - atualizaDAO - atulizar dados ; consultaDAO - essa parte que estou TENTANDO fazer ; excluirDAO - excluir dados ;usuarioDAO - incluir dados no bd;

gui - atualizarGUI(atualiza e consulta estarão aqui) ; CadastrarGUI ; ExcluirGUI.

modelo - Usuario.

To fazendo certo?

Criado 18 de novembro de 2014
Ultima resposta 18 de nov. de 2014
Respostas 4
Participantes 2