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;
?