Verificar se existe no banco de dados(RESOLVIDO!)

Sou novo e estou aprendendo ainda, estou com dificuldade para busca 2 campos que são o cpf e senha no banco de dados.
Se caso eles esteja cadastrado no banco de dado me leva para outra tela, seria basicamente um login de usuário.
Quem poder me ajuda agradeço.

Esse e meu UsuarioDAO.

package dao;

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

public class UsuarioDAO { 
    private Connection connection;
    Long id;
    String nome;
    String cpf;
    String email;
    String telefone;
    String senha;
    public UsuarioDAO(){ 
        this.connection = new ConnectionFactory().getConnection();
    } 
    public void adiciona(Usuario usuario){ 
        String sql = "INSERT INTO usuario(nome,cpf,email,telefone,nsenha) VALUES(?,?,?,?,?)";
        try { 
            PreparedStatement stmt = connection.prepareStatement(sql);
            stmt.setString(1, usuario.getNome());
            stmt.setString(2, usuario.getCpf());
            stmt.setString(3, usuario.getEmail());
            stmt.setString(4, usuario.getTelefone());
            stmt.setString(5, usuario.getSenha());
            stmt.execute();
            stmt.close();
        } 
        catch (SQLException u) { 
            throw new RuntimeException(u);
        } 
        
    } 
    
}

Essa e minha interface de login

package gui;

import javax.swing.JOptionPane;

public class TelaInicio extends javax.swing.JFrame {

public TelaInicio() {
    initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jBSair = new javax.swing.JButton();
    jLabel5 = new javax.swing.JLabel();
    jLabel1 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    jLabel6 = new javax.swing.JLabel();
    jBEntrar = new javax.swing.JButton();
    jBLimpar = new javax.swing.JButton();
    jFCpf = new javax.swing.JFormattedTextField();
    jPSenha = new javax.swing.JPasswordField();
    jMenuBar1 = new javax.swing.JMenuBar();
    jMenu1 = new javax.swing.JMenu();
    jMCadastraUser = new javax.swing.JMenuItem();
    jMenu2 = new javax.swing.JMenu();
    jMenuItem1 = new javax.swing.JMenuItem();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setMaximumSize(new java.awt.Dimension(351, 350));
    setMinimumSize(new java.awt.Dimension(351, 350));
    setResizable(false);

    jBSair.setText("SAIR");
    jBSair.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jBSairActionPerformed(evt);
        }
    });

    jLabel5.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
    jLabel5.setText("LOGIN");

    jLabel1.setText("CPF:");

    jLabel2.setText("SENHA:");

    jLabel6.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
    jLabel6.setText("SEJA BEM VINDO");

    jBEntrar.setText("ENTRAR");
    jBEntrar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jBEntrarActionPerformed(evt);
        }
    });

    jBLimpar.setText("LIMPAR");
    jBLimpar.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jBLimparActionPerformed(evt);
        }
    });

    jMenu1.setText("MENU");

    jMCadastraUser.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, java.awt.event.InputEvent.CTRL_MASK));
    jMCadastraUser.setText("CADASTRA USUARIO");
    jMCadastraUser.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jMCadastraUserActionPerformed(evt);
        }
    });
    jMenu1.add(jMCadastraUser);

    jMenuBar1.add(jMenu1);

    jMenu2.setText("SOBRE");

    jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
    jMenuItem1.setText("SOBRE");
    jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jMenuItem1ActionPerformed(evt);
        }
    });
    jMenu2.add(jMenuItem1);

    jMenuBar1.add(jMenu2);

    setJMenuBar(jMenuBar1);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jBSair))
                .addGroup(layout.createSequentialGroup()
                    .addGap(135, 135, 135)
                    .addComponent(jLabel5))
                .addGroup(layout.createSequentialGroup()
                    .addGap(22, 22, 22)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 76, Short.MAX_VALUE)
                        .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(jBLimpar, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 54, Short.MAX_VALUE)
                            .addComponent(jBEntrar, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addComponent(jFCpf)
                        .addComponent(jPSenha))))
            .addContainerGap(29, Short.MAX_VALUE))
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(72, Short.MAX_VALUE)
                .addComponent(jLabel6)
                .addGap(72, 72, 72)))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addGap(75, 75, 75)
            .addComponent(jLabel5)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jFCpf, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(8, 8, 8)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jPSenha, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE))
            .addGap(17, 17, 17)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jBEntrar, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jBLimpar, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 62, Short.MAX_VALUE)
            .addComponent(jBSair)
            .addContainerGap())
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(21, 21, 21)
                .addComponent(jLabel6)
                .addContainerGap(279, Short.MAX_VALUE)))
    );

    pack();
    setLocationRelativeTo(null);
}// </editor-fold>                        

private void jMCadastraUserActionPerformed(java.awt.event.ActionEvent evt) {                                               
    TelaCadastro tc = new TelaCadastro();
    tc.setVisible(true);
    this.pack();
    dispose();
    
}                                              

private void jBSairActionPerformed(java.awt.event.ActionEvent evt) {                                       
    System.exit(0);
}                                      

private void jBLimparActionPerformed(java.awt.event.ActionEvent evt) {                                         
    jFCpf.setText("");
    jPSenha.setText("");
    
}                                        

private void jBEntrarActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
}                                        

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    JOptionPane.showMessageDialog(null, "DONO:CARLOS EDUARDO"+"\n"+"SISTEMA FEITO PARA PASA TEMPO E TESTE DE CONHECIMENTO" , "SOBRE :)" , JOptionPane.INFORMATION_MESSAGE);
    // TODO add your handling code here:
}                                          

public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(TelaInicio.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(TelaInicio.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(TelaInicio.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(TelaInicio.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new TelaInicio().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton jBEntrar;
private javax.swing.JButton jBLimpar;
private javax.swing.JButton jBSair;
private javax.swing.JFormattedTextField jFCpf;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JMenuItem jMCadastraUser;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JPasswordField jPSenha;
// End of variables declaration                   
}

Um método de login pode ser feito desta forma:

public boolean login(Usuario user) {
        String sql = "SELECT * FROM usuario WHERE login = ? AND senha = ?";
        try {
            stmt = CONN.prepareStatement(sql);
            stmt.setString(1, user.getLogin());
            stmt.setString(2, user.getSenha());
            rs = stmt.executeQuery();
            if (rs.next()) {
                return true;
            }
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "ERRO!\n" + e);
        }
        return false;
    }

Fiz o método retornando boolean, pois meu projeto é orientado a objetos, e fica mais simples da forma que eu planejei mas também pode ser feito como void, fica a sua escolha.
Bons estudos :+1:

Esse “rs” , seria no caso oque ? ResultSet?

Sim.

E acho que o seu “login” ficaria assim usando suas classes.

> public void login(Usuario usuario){
>          String sql = "SELECT * FROM usuario where cpf = ? and nsenha = ?";
>          try{
>                   PreparedStatement stmt = connection.prepareStatement(sql);
>                   stmt.setString(1, usuario.getCpf());
>                   stmt.setString2, usuario.getSenha());
>                   ResultSet rs = stmt.executeQuery();
>                   if(rs.next()){
>                             //Encontrou, e você pode carregar os dados restantes.
>                             usuario.setNome(rs.getString("nome")); //um exemplo de como pegar
>                   }else{
>                             JOptionPane.showMessageDialog(null, "Usuário não encontrado.");
>                   }
>          }catch(Exception ex){
>    
>          }
> }
1 curtida

No botão loga eu chamaria o método login?

talvez vc tenha que adaptar esse meu metodo fiz void, não faz sentido ser void.
tem que ser boolean ou do tipo Usuario.
no botao você faria.
Usuario userTemporario = new Usuario();
userTemporario.setCpf(fieldDoCpf.getText());
userTemporario.setSenha(fieldDaSenha.getText());
UsuarioDAO userClass = new UsuarioDAO(); //não sei se foi criado anteriormente, senão, só adapte.
userClass.login(userTemporario); //sendo void você só descobrira se “logou” ou não.

1 curtida

Entendi, vou tentar aqui e já já falo se deu certo.obrigado mesmo cara!

Vlw cara deu certoo :wink:

Vlw sua dica ajudo tbm :wink:

Da uma lida nesse tópico … vai ajudar mais pra frente a persistir os dados do usuário

Da uma analisada nesse método de conexão com o Banco: