Olá pessoal, eu sou novo em programação… Estou com um problema para criar um projeto do meu curso. Eu quero fazer um JFrame para login do usuário. Bom, o usuário insere seu CPF e cria uma senha na hora do cadastro. E depois quando for fazer login… quero verificar se a senha dele e o CPF estão de acordo com o cadastrado. Criei uma classe chamada “OperacoesInicial” e nela coloquei o seguinte código:
// Sempre está dando false… mesmo colocando a mesma senha e o mesmo CPF.
Tela_Login obLogin = new Tela_Login(); //Criei os objetos da classe Login e Classe Agencia..
CadastrarAgencia obAgencia = new CadastrarAgencia();// Nessa classe é onde o usuario cria a senha e informa o CPF. Na classe Login é onde o usuario informa o CPF e sua senha cadastrada. Mas
public void cpfSenha(){
if (obLogin.getCxCPF().equals(obAgencia.getCpfCli()) & (obLogin.getCxSenha().equals(obAgencia.getCxSenha()))) {
JOptionPane.showMessageDialog(null, "Clique em OK para prosseguir.");
Tela_Operacoes chamaTelaOp = new Tela_Operacoes();
chamaTelaOp.setVisible(true);
} else {
JOptionPane.showMessageDialog(null, "CPF ou Senha incorreto. Verifique os dados e tente novamente. ");
}
}
@G.Santiago, nesse seu caso ae você só estanciou os objetos, mas de onde está vindo os dados?
Está meio confuso esse cogido ae!
Segue um código meu para ver se te ajuda.
public void Logar() {
String sql = "SELECT * FROM usuarios WHERE nome_usuario = ? AND senha_usuario = ?";
try {
pst = conexao.prepareStatement(sql);
pst.setString(1, jTextFieldUsuario.getText());
pst.setString(2, jPasswordFieldSenha.getText());
rs = pst.executeQuery();
//SE EXISTIR usuário E senha NA TABELA 'usuários' SEGUE O CÓDIGO;
if (rs.next()) {
//CAPTURANDO O CONTÉUDO DO CAMPO 'perfil_usuario' DA TABELA 'usuarios';
String perfil = rs.getString(4);
// SE O 'perfil_usuario' FOR IGUAL A 'administrador' LOGUE COMO ADMINISTRADOR;
if (perfil.equals("ADMINISTRADOR")) {
TelaPrincipal principal = new TelaPrincipal();
principal.setVisible(true);
TelaPrincipal.jMenuItemUsuarios.setEnabled(true);
TelaPrincipal.jMenuItemSetores.setEnabled(true);
TelaPrincipal.jMenuItemRelatorioSetores.setEnabled(true);
TelaPrincipal.jMenuItemRelatorioUsuarios.setEnabled(true);
//OBTÉM O CONTEÚDO DO CAMPO 'nome_usuario' DA tabela 'usuarios', PARA EXIBIÇÃO NA 'tela principal';
TelaPrincipal.jLabelResultInfoUsuario.setText(rs.getString(2).toUpperCase());
TelaPrincipal.jLabelResultInfoUsuario.setForeground(Color.blue);
//OBTÉM O CONTEÚDO DO CAMPO 'perfil_usuario' DA tabela 'usuarios
TelaPrincipal.jLabelResultPerfil.setText(rs.getString(4).toUpperCase());
TelaPrincipal.jLabelResultPerfil.setForeground(Color.blue);
dispose();
conexao.close();
// SENÃO LOGUE COMO USUÁRIO;
} else {
TelaPrincipal principal = new TelaPrincipal();
principal.setVisible(true);
//Obtem o conteúdo do campo 'usuario_usuario' da tabela 'usuarios', PARA EXIBIÇÃO NA 'tela principal';
TelaPrincipal.jLabelResultInfoUsuario.setText(rs.getString(2).toUpperCase());
TelaPrincipal.jLabelResultInfoUsuario.setForeground(Color.blue);
//OBTÉM O CONTEÚDO DO CAMPO 'perfil_usuario' DA tabela 'usuarios
TelaPrincipal.jLabelResultPerfil.setText(rs.getString(4).toUpperCase());
TelaPrincipal.jLabelResultPerfil.setForeground(Color.blue);
dispose();
conexao.close();
}
} else {
JOptionPane.showMessageDialog(null, "Usuário ou senha inválido!");
}
} catch (HeadlessException | SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro: \n" + ex);
}
}
getters e setters são apenas métodos que permite a troca de valor com aqueles atributos, não quer dizer que estejam sendo devidamente usados. DEBUGA e se certifica que lá onde vc está fazendo a comparação tudo tenha o valor q vc espera.
Beleza vou testar. Mas bom, como eu deveria fazer então? Meu código está IMUNDO. Tudo que eu penso eu só coloco rs. Para depois tentar arrumar. Mas não estou conseguindo fazer umas coisas. rs E não tenho ninguém para me auxiliar. Eu tentei fazer assim: Em um JFrame coloquei para o usuário informar seu CPF e uma SENHA. E esses dados estariam nas variáveis cxCpfCli e cxSenha (Da classe Cadastro). aí beleza, criei um outro JFrame para ser a TelaLogin. Nela eu tenho que verificar se o que o usuário informou no JFrame Cadastro bate com o que ele informa no JFrame Login. Por isso fiz essa parte do código:
//{obAgencia é o nome do meu objeto da tela Cadastro
if (obLogin.getCxCPF().equals(obAgencia.getCpfCli()) & (obLogin.getCxSenha().equals(obAgencia.getCxSenha()))) {
Tentei verificar usando o equals() se a CxCPF da tela login é igual a o que foi escrito na cxCPFCli do JFrame Cadastro.