Verificar Usuário e Senha

Olá pessoal,

Estou querendo fazer uma validação, tipo, uma tela de login com nome de usuário e senha. Criei um actionPerformed pro jButton, armazenei o conteúdo dos dois JTextField em variáveis “Usuário e senha”. O problema é, como eu verifico se o usuário existe e se a senha está correta? dou um SELECT user,senha
FROM login
WHERE (user = variavelLogin) AND (senha = variavelSenha);

Deste jeito eu não sei tratar a exceção de não ter achado usuário ou senha, gostaria da ajuda de vocês.

Abraços.

Você executa essa consulta e se retornar alguma linha é porque existe esse usuário no banco de dados, então você lança uma exceção, se houver resultado.

Rafael, muito obrigado pela ajuda, mas ainda estou tendo erros, criei duas classes: a BancoDeDados, que se conecta no banco e executa as queries, e a frameLogin, onde o usuario preenche seu login e senha, vou colar os codigos aqui:

============== CLASSE BancoDeDados ================

import java.sql.*;

public class BancoDeDados {
       private Connection con; 
       private Boolean valida;
   
    public void getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/inventario","admin","12345");
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public Boolean setValidacao(String query, String login, String pass) {
        try {
            Statement stmt = con.createStatement();
            ResultSet res = stmt.executeQuery(query);
            while (res.next()) {
                String nome = res.getString("user");
                String senha = res.getString("pass");
                if (nome == login && senha == pass)
                   valida = true;
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return valida;
    }
}

============CLASSE frameLogin=====================

import javax.swing.*;
public class frameLogin extends javax.swing.JFrame {
    
    /** Creates new form frameLogin */
    public frameLogin() {
        initComponents();
        objConexao = new BancoDeDados();
    }
    
   (...)

    private void botaoLoginActionPerformed(java.awt.event.ActionEvent evt) {                                           
// TODO add your handling code here:
        String login = campoLogin.getText();
        String senha = campoSenha.getText();
        objConexao.getConnection();
        Boolean valida = objConexao.setValidacao("SELECT user,pass FROM login WHERE user = \""+login+"\" AND pass =\""+senha+"\";",login,senha);
        if (valida == true)
            JOptionPane.showMessageDialog(null,"Usuário Validado com sucesso");
        else
            JOptionPane.showMessageDialog(null,"Os dados informados estão incorretos");
    }                                          
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new frameLogin().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JButton botaoLogin;
    private javax.swing.JLabel cabecalho;
    private javax.swing.JTextField campoLogin;
    private javax.swing.JPasswordField campoSenha;
    private javax.swing.JLabel labelLogin;
    private javax.swing.JLabel labelSenha;
    private javax.swing.JPanel mensagem;
    // End of variables declaration                   
    private BancoDeDados objConexao;
}

O programa roda, consigo preencher o nome de usuario e senha, mas quando aperto no botão para validar aparece:

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at frameLogin.botaoLoginActionPerformed(frameLogin.java:121)
at frameLogin.access$000(frameLogin.java:12)
at frameLogin$1.actionPerformed(frameLogin.java:50)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
BUILD SUCCESSFUL (total time: 10 seconds)

Gostaria de saber onde está o erro, abraços.

[color=“red”]Favor colocar códigos entre as tags (code)(/code)* - Reifel.

  • ( = [ e ) = ] [/color]

Oi Carvalho,

primeiro…
nao faça comparação de strings usando o ‘==’. Utilize o metodo equals() da classe String.

e

acho que o codigo correto seria:

ResultSet res = stmt.executeQuery(query);
if(res.next()) {
      return true;
}else{
      return false;
} 

Olá Diego… muito obrigado, a bronca era essa mesma, não prestei ateção e comparei duas strings com ==, muito obrigado, irei testar o exemplo que você me passou pra ver se consigo o mesmo efeito.

Abraços,
Allan Carvalho