Missing return statement [RESOLVIDO]

3 respostas
kmunga

Estou criando uma classe para validar o usuário e senha contidos em um banco de dados, ela deve ver se existe usuário e se bate com a senha para devolver verdadeiro ou falso para o programa mãe. Porem da esse erro ao compilar.

Validador.java:32: missing return statement
  }          
  ^
1 error
/code]

O codigo

[code]
import java.sql.*;

public class Validador {

  private String nome,pass;

  public boolean validar(String user, String pwd){
    BD bd=new BD();
    if(bd.getConnection()){
      try {
        String sql="SELECT username,senha FROM clientes WHERE username=?";
        PreparedStatement statement=bd.connection.prepareStatement(sql);
        statement.setString(1,user);
        ResultSet resultSet=statement.executeQuery();
        if(resultSet.next()){
          nome=resultSet.getString("user");
          pass=resultSet.getString("pwd");
        }
        bd.close();
        resultSet.close();
        if(nome==user && pass==pwd){
          return true;
        }
        else {
          return false;
        }
      }        
      catch(SQLException erro){
        return false;
      }
    }
  }          
}

obrigado

3 Respostas

drsmachado

Veja que você tem um if e não tem um else. E se a condição não for satisfeita?

francislon

Uma prática que eu sempre utilizo é a de somente fazer o retorno do método na última linha. Fazendo isso evita-se problemas de saber qual fluxo de retorno não está sendo coberto.
Eu faria algo assim:

import java.sql.*;

public class Validador {

  private String nome,pass;

  public boolean validar(String user, String pwd){
    BD bd=new BD();
    boolean ehValido = true;
    if(bd.getConnection()){
      try {
        String sql="SELECT username,senha FROM clientes WHERE username=?";
        PreparedStatement statement=bd.connection.prepareStatement(sql);
        statement.setString(1,user);
        ResultSet resultSet=statement.executeQuery();
        if(resultSet.next()){
          nome=resultSet.getString("user");
          pass=resultSet.getString("pwd");
        }
        bd.close();
        resultSet.close();
        if(nome != user || pass != pwd){
          ehValido = false;
        }
      }        
      catch(SQLException erro){
        ehValido = false;
      }
    }
    else{
        ehValido = false;
    }
    return ehValido;
  }          
}
kmunga

Obrigado ai pessoal :smiley:

Criado 10 de julho de 2012
Ultima resposta 10 de jul. de 2012
Respostas 3
Participantes 3