Validar senhas em um banco de dados

1 resposta
FabricioPJ

Olá a todos. Estou com um projeto, que está apresentando problemas logo em seu início. O problema é o seguinte. Criei uma tabela “senhas” que armazenará todas as senhas que forem fornecidas, e tenho um frame com os seguintes botões: “Trocar senha” (quando clicado, abre um outro frame que permite alterar a senha). “Criar senha” (quando clicado, salva o usuário e sua senha no banco. Esse está OK ). E por fim, o botão “Entrar” (quando clicado, se o usuário e senha estiverem corretos [salvos no banco] o frame principal se abrirá).

Estou com problemas nas funções dos botões “Trocar senha” e “Entrar”.

No botão “Trocar senha”, quando eu digito nos textFields o usuário e senha CORRETOS, ele lança um aviso de erro (feito por mim). Vejam o código abaixo:

if(tfLogin.getText().equals(s.getLogin()) && tfSenha.getText().equals(s.getSenha())){ frameSenhas fs = new frameSenhas(); fs.setLocationRelativeTo(null); fs.setVisible(true); } else JOptionPane.showMessageDialog(null, "Login/Senha não válidos.", "ERRO", JOptionPane.ERROR_MESSAGE);

No 1º if, estou pedindo, se o login e senha digitados no “tfLogin” e “tfSenha” (textFields) forem iguais ao que estiver armazenado no objeto s (classe senha, com os métodos gets e sets) o frame “Trocar Senha” se abrirá. Acho que meu erro é porque não estou fazendo a busca no Banco, mas sim no objeto instânciado por “s”, mas não sei como realizar essa busca no Banco.

O meu outro problema é quase igual ao 1º. Vejam o código:

conexao conex = new conexao(); conex.conecta(); if(tfLogin.getText().equals(s.getLogin()) && tfSenha.getText().equals(s.getSenha())){ frameFuncoes ff = new frameFuncoes(); ff.setVisible(true); ff.setLocationRelativeTo(null); } else JOptionPane.showMessageDialog(null, "Não deu certo");

Aqui quero dizer que se o login e senhas digitados corresponderem a algum existente no Banco, o frame principal se abrirá. Mas não acontece isso, ao invés, é lançada a mensagem “Não deu certo”.

Creio eu que os 2 problemas tem a mesma solução.

Desculpem o longo problema, mas já tentei quase tudo que sei sobre meu curto conhecimento sobre Java.

Grato pela atenção e ajuda dos colegas.

IDE usada: NetBeans 5.0
Banco de Dados: Apache Derby

1 Resposta

FabricioPJ

Problema resolvido. O que fiz foi criar um método que acesse o banco e armazene seus valores em um objeto, vejam:

public senha checarSenha(String login){ try{ senha s = new senha(); PreparedStatement st1 = con.prepareStatement("SELECT * FROM \"FABRICIO\".\"senhas\" WHERE \"senhas\".\"Login\" = ?"); st1.setString(1, login); ResultSet rs = st1.executeQuery(); if(rs.next()){ s.setLogin(rs.getString("Login")); s.setSenha(rs.getString("senha")); } st1.close(); return s; } catch (SQLException e){ JOptionPane.showMessageDialog(null, "ERRO em checarSenha(): " + e.getMessage()); } return null; }

Até agora, tudo está funcionando como deveria.

Obrigado aos que leram o tópico.

Criado 14 de outubro de 2007
Ultima resposta 15 de out. de 2007
Respostas 1
Participantes 1