Olá pessoal, estou com dúvidas no código de validação de login. Se eu digito um nome existe no bd, ele tambem informa que não existe. Não entendi o que está acontecendo com esse código.
FuncionarioDAO
public boolean existeUnico(Funcionario funcionario) throws SQLException {
PreparedStatement stmt = connection.prepareStatement
("select *from funcionarios where usuario=? and senha=?");
stmt.setString(1, funcionario.getUsuario());
stmt.setString(2, funcionario.getSenha());
ResultSet rs = stmt.executeQuery();
try{
if(!rs.next()){
return false;
}
return !rs.next();
}
finally {
rs.close();
stmt.close();
}
}
LoginAction, onde eu envio o usuario e a senha para o FuncionarioDAO pra retornar true ou false.
Da maneira como está implementado… sempre vai retornar false devido return !rs.next(); quando deveria ser return rs.next();.
Também pode refatorar seu código conforme joao.junior sugeriu.
se getRow() retornar zero não existem usuários com os dados informados, se retornar mais que 1 então eu estou com um problema de usuário duplicado (nome/senha o que deveria se evitado no cadastro)… e não valido a entrada do usuário. Coisa que eu não conseguiria usando apenas “!resultSet().next” se você gostar da idéia tenta.