Problemas com verificação de senha [RESOLVIDO]

Boa tarde galera, to com um probleminha aqui na hora de verificar a senha atual do usuario para que alteração de senha seguinte.: tenho um tela de alteração de senha onde o cara seleciona o usuario que desejar alterar a senha ja JTable e os dados vão para os seus respestivos textfields, quando abro a tela para alteração de senha seleciono o usuario ja JTable para e os dados vão para os TextFields, digita a senha atual a nova senha e confirma a senha, caso a senha atual seja inválida ele lança uma mensagem caso não ele verifica a confirmação, se tiver tudo certo ele altera a senha, mas tem um problema, caso eu altere tente alterar a senha de outro usuário logo após a alteração de senha do primeiro, ele não confere a senha atual passa direto, por que desse erro???
Vo postar todos os métodos referentes a essa parte de alteração de senha… Obrigado!! :mrgreen:

MÉTODO QUE BUSCA UMA LISTA DE SENHA

[code]public List<Usuario> buscaSenha() throws SQLException
{

    Connection conn = Conexao.getConexao();
    String sql = "Select senha From usuario";
    PreparedStatement stmt = conn.prepareStatement(sql);
    ResultSet rs = stmt.executeQuery();
    List&lt;Usuario&gt; lista = new ArrayList&lt;Usuario&gt;();

    while(rs.next())
    {
         Usuario usuario = new Usuario(rs.getString("senha"));
         lista.add(usuario);
    }
    rs.close();
    stmt.close();
    return lista;
 }[/code]

MÉTODO QUE RECEBE A SENHA COMO PARAMETRO E VERIFICA NA LISTA

private boolean verificaSenha(String senha) throws SQLException { UsuarioDAO dao = new UsuarioDAO(); List&lt;Usuario&gt; lista = dao.buscaSenha(); for(Usuario user : lista) { if(senha.equals(user.getSenha())) { result = true; break; } } return result; }

BOTÃO ALTERA SENHA

[code] private void bt_senhaActionPerformed(java.awt.event.ActionEvent evt) {

    if(evt.getSource() == bt_senha)
    {
        UsuarioNegocio UN = new UsuarioNegocio();
        int row = tabela_altera_usuario.getSelectedRow();
        UsuarioModel model = (UsuarioModel)tabela_altera_usuario.getModel();
        String nova = tf_nova.getText();
        String confirma = tf_confirmacao.getText();

        Usuario user = model.get(row);
        try {
            if (!this.verificaSenha(tf_senha.getText())) {
                JOptionPane.showMessageDialog(null, "Senha atual Invalida");
                tf_senha.setText("");
            }else
                if(!nova.equals(confirma))
                {
                     JOptionPane.showMessageDialog(null, "Confirmaçao de senha invalida");
                     tf_confirmacao.setText("");
                }else{
                     UN.alterarSenhaUsuario(user, nova);
                      JOptionPane.showMessageDialog(null, "Alterado com Sucesso!");
                      tf_senha.setText("");
                      tf_nova.setText("");
                      tf_confirmacao.setText("");
                }
        } catch (SQLException ex) {
            Logger.getLogger(BuscaAlteracaoVendedor.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
}  [/code]

Vlw galera, ja resolvi… :XD: … a solução era simplismente declarar a variável result como local dentro do método verificaSenha()

Cara, percebi que você resolveu o problema.
Mas tava olhando seu codigo e o seu codigo de verifica senha ta meio errado.

Ele pega todas a senha do banco e se uma for igual ele valida.
Pensa assim, desse modo se sem querer outro usuario tiver a mesma senha digitada, ele vai validar.

A Dica é que você busque a senha somente do usuario que você está tentando.

bom… é só uma observação.

[quote=thiagopooh]Cara, percebi que você resolveu o problema.
Mas tava olhando seu codigo e o seu codigo de verifica senha ta meio errado.

Ele pega todas a senha do banco e se uma for igual ele valida.
Pensa assim, desse modo se sem querer outro usuario tiver a mesma senha digitada, ele vai validar.

A Dica é que você busque a senha somente do usuario que você está tentando.

bom… é só uma observação.[/quote]

Concordo com o thiago!
Normalmente, quando você quer trocar a senha de um usuário, você busca o objeto dele no Banco de Dados.

public Usuario buscarUsuario(String nome, String senha)
{
   String query = "Select * From Usuarios Where Nome = '?' And Senha = '?'";
   // O resto vem aqui. Retorna null se não achar nada, e o objeto do usuário se achar alguma coisa.
}

Para alterar a senha de um usuário, você monta um novo objeto em cima daquele existente. Você já tem o ID dele mesmo, então é só alterar os outros dados que quiser e fazer um método de alterar mais ou menos assim:

public void alterarRegistro(Usuario usuario, Connection connection) throws Exception
{
   String query = "Update Usuarios Set Nome = ?, Senha = ? Where ID = ?";
   PreparedStatement statement = connection.prepareStatement(query);
   statement.setString(1, usuario.getNome());
   statement.setString(2, usuario.getSenha());
   statement.setInt(3, usuario.getId());

   statement.executeUpdate();
}

Você busca o usuário João com a senha 123 e ID 1. Você altera seus dados, mudando o nome do usuário para João Pedro e a senha para 123456. O ID continua intacto. Então, faz uso de um método como o alterarRegistro() acima e boa! Basicamente por aí!

Espero ter ajudado, abraços!