Duvida com metodo logar / seu retorno

1 resposta Resolvido
programaçãojavamysql
J

Olá a todos!

public boolean logar(String login, String senha) throws SQLException{

boolean status = false;

String sql = SELECT * FROM usuario WHERE login=? AND senha=?;

stmt = con.prepareStatement(sql);

stmt.setString(1, login);

stmt.setString(2, senha);
rs = stmt.executeQuery();
    //System.out.println("rs: " +rs.next());
    if(rs.next()){
        status = true;
}
    stmt.close();
    rs.close();
    con.close();
   // return status;
    System.out.println("status" +status);
    return status;
}

criei o metodo logar acima e encontrei um certo problema.

o metodo vai no db e faz a busca de login and senha e se encontrar retorna true.
tudo bem até aí, mas quando eu coloquei o system.out.print(rs.next())… aparece true no console, mas a variavel status retorna com falso e não consigo logar no sistema por isso.

Entretanto se eu remover esse system.out.print ele funciona!

então gostaria de saber o porque? alguém pode responder isso???/

agradeço desde já!

1 Resposta

TerraSkilll
Solucao aceita

O next() move o cursor do Statement. Se você o executa 2 vezes (uma no print, outra pra atribuir status), a segunda execução só vai funcionar se houver mais de um registro, o que não parece ser o caso. Por isso que funciona quando você comenta o println.

Se você quer mesmo exibir algo no console, atribua a variável status primeiro e use-a. Algo assim:

rs = stmt.executeQuery();
// primeiro, é atribuído o status.
    if(rs.next()){
        status = true;
}
// println usa a variável status ao invés do rs.next(), senão vai exibir false
    System.out.println("rs: " +status);

Abraço.

Criado 22 de dezembro de 2018
Ultima resposta 22 de dez. de 2018
Respostas 1
Participantes 2