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_LoginobLogin=newTela_Login();//Criei os objetos da classe Login e Classe Agencia.. CadastrarAgenciaobAgencia=newCadastrarAgencia();// 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 publicvoidcpfSenha(){if(obLogin.getCxCPF().equals(obAgencia.getCpfCli())&(obLogin.getCxSenha().equals(obAgencia.getCxSenha()))){JOptionPane.showMessageDialog(null,"Clique em OK para prosseguir.");Tela_OperacoeschamaTelaOp=newTela_Operacoes();chamaTelaOp.setVisible(true);}else{JOptionPane.showMessageDialog(null,"CPF ou Senha incorreto. Verifique os dados e tente novamente. ");}}
Vc usa banco? Em qual parte vc está verificando os dados informados com oq está cadastrado?
Qual a lógica em vc testar os dados informados com um objeto vazio recém criado?
T
ThiagoSA
@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.
publicvoidLogar(){Stringsql="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';Stringperfil=rs.getString(4);// SE O 'perfil_usuario' FOR IGUAL A 'administrador' LOGUE COMO ADMINISTRADOR;if(perfil.equals("ADMINISTRADOR")){TelaPrincipalprincipal=newTelaPrincipal();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 'usuariosTelaPrincipal.jLabelResultPerfil.setText(rs.getString(4).toUpperCase());TelaPrincipal.jLabelResultPerfil.setForeground(Color.blue);dispose();conexao.close();// SENÃO LOGUE COMO USUÁRIO;}else{TelaPrincipalprincipal=newTelaPrincipal();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 'usuariosTelaPrincipal.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|SQLExceptionex){JOptionPane.showMessageDialog(null,"Erro: \n"+ex);}}
G
G.Santiago
Eu estou puxando de um outro JFrame… Segue o código do meu JFrame Cadastro:
Estes são meus Getters e Setters do CPF e Senha. Os meus objetos criados no código anterior estão invocando esses métodos.
G
G.Santiago
Sou novo no JAVA, se puderem me dizer o que eu deveria fazer eu ficaria grato
G
G.Santiago
Vou testar, obrigado desde já!
G
G.Santiago
Eu ainda não tenho um banco de dados. Pois eu quero por hora somente testar com dados temporários armazenados nas variáveis. rs Seria possivel?
R
Rodrigo_Void
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.
G
G.Santiago
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.
R
Rodrigo_Void
Se vc tem em mente usar banco de dados, n tm pq ficar fazendo código pra testa sem o banco, é desperdicio, faz logo com a parte de banco.
G
G.Santiago
Entendi, Beleza então. Obrigado.
T
ThiagoSA
@G.Santiago, Faz esse curso basíco aqui que vou lhe passar me ajudou bastante no começo.
G
G.Santiago
Obrigado @ThiagoSA irei começar a fazer então. Fico grato