Java.lang.Exception: Erro ao consultar dados!

Boa tarde, estou tentando fazer uma verificaçao de login,
Fiz o debug e quando chega na linha 16 ele da erro
alguem pode me ajudar a indentificar o que estou fazendo de errado.
Desde ja obrigado

public int autenticaUserDB(String login, String senha)throws Exception{
       PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;
        int valor = 0;
        
        try {
            String SQL ="Select count(NOME_PROF) qtd from professor where NOME_PROF =? and SENHA_PROF=?";
            conn = this.conn;
             ps = conn.prepareStatement(SQL);
             ps.setString(1,login);
             ps.setString(2,senha);             
             rs = ps.executeQuery();
            valor = rs.getInt(1); 
                
                
            } catch (SQLException e) {
                throw new Exception("Erro ao consultar dados!!!");
            } finally {
                ConnectionFactory.closeConnection(conn, ps);
            }
        
            return valor;
    }
}

Me explica a lógica por favor.

Porque você está pegando o total de usuários ao invés de apenas verificar se o mesmo está cadastrado.

Desde que

Connection conn = null; 

E você faz

conn = this.conn; 

Você terá um NullPointerException aqui

ps = conn.prepareStatement(SQL);

Que você não vê aqui

catch (SQLException e) {  
                throw new Exception("Erro ao consultar dados!!!");  
            }

Por ter ocultado o conteúdo de e.

Pergunta: Onde você instancia o objeto conn?

[quote=marcoslogan]Me explica a lógica por favor.

Porque você está pegando o total de usuários ao invés de apenas verificar se o mesmo está cadastrado.[/quote]
Mas não dá na mesma?

logica e se eu encontrar as 2 informaçoes no banco a variavel “valor” retornaria 1, validando o login
Mas estou aberto a novas opnioes

Classe Dao

public interface LoginDao {    
    int autenticaUserDB(String login, String senha)throws Exception;
}

Classe Controller

public class ControllerLogin {

    private String login;
    private String senha;

    public ControllerLogin() {
    }
    
    
        
    
    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String autenticaUser() throws Exception {
        LoginDao log = new LoginDaoImp();
        
        if (log.autenticaUserDB(login, senha)== 1 ){
            return "Logado";
        }else 
            return "Senha incorreta";
    }

    

}

[quote=marcosvx] logica e se eu encontrar as 2 informaçoes no banco a variavel “valor” retornaria 1, validando o login
Mas estou aberto a novas opnioes

Classe Dao

public interface LoginDao {    
    int autenticaUserDB(String login, String senha)throws Exception;
}

Classe Controller

public class ControllerLogin {

    private String login;
    private String senha;

    public ControllerLogin() {
    }
    
    
        
    
    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String autenticaUser() throws Exception {
        LoginDao log = new LoginDaoImp();
        
        if (log.autenticaUserDB(login, senha)== 1 ){
            return "Logado";
        }else 
            return "Senha incorreta";
    }

    

}

[/quote]
Repito o que perguntei Onde instancia o objeto conn?

o conn eu instancion no metodo construtor da classe esse conn recebe a conexao.
Fiz isso no mesmo para todas as outras classe que mecho com o banco de dados.
so essa que ta dando errado.

Bom, então sugiro, antes de mais nada, mudar o catch e inserir nele a mensagem retornada pela exception.
Outra mudança é, se você tem um objeto conn da classe, use-a. Ter uma outra variável dentro do método não muda em nada.

Vo mudar aqui, que a o esse trabalho é de faculdade e a gente pego esse exemplo pronto e modifico para funcionar no nosso projeto.

[quote=marcosvx]Vo mudar aqui, que a o esse trabalho é de faculdade e a gente pego esse exemplo pronto e modifico para funcionar no nosso projeto.
[/quote]

sério que o seu professor passou algo assim:

        conn = this.conn;  

?