Problema com IF [RESOLVIDO]

3 respostas
kmunga

Bom, estou com um problema em meu codigo. Crei uma classe teste que envia usuario e senha para classe Validador, esta abre o banco de dados e verifica se o usuário e a senha enviadas pela classe teste são as mesmas do que do banco de dados. Mas por algum motivo não esta conseguindo fazer a comparação

A senha contida no banco de dados são do tipo Varchar e é a mesma informada na classe Teste

os codigos

Validador.java

import java.sql.*;
import java.sql.SQLException;


public class Validador {

  private String nome,pass;

  public boolean validar(String usuario, String pwd){
    BD bd=new BD();
    Boolean resultado=true;
    System.out.println("Usuario: "+usuario+" Senha:"+pwd);
    if(bd.getConnection()){
      try {
        String sql="select username,senha from clientes where username = ?";
        PreparedStatement statement=bd.connection.prepareStatement(sql);
        statement.setString(1,usuario);
        ResultSet resultSet=statement.executeQuery();
        if(resultSet.next()){
          nome=resultSet.getString("username");
          pass=resultSet.getString("senha");
          System.out.println("usuario do banco: "+nome+" senha do banco:"+pass);
          if(pass==pwd){
            resultado=true;
            System.out.println("logou");
          }
          else {
            System.out.println("Usuario ou senha invalida");
            resultado=false;
          }
        }
        else {
          System.out.println("Usuario inexistente");
          resultado=false;
        }
        bd.close();
        resultSet.close();

                
     }   
     catch(SQLException erro){
        erro.printStackTrace();
        System.out.println("Erro: "+erro);
        resultado=true;
     }
   } 
   else { 
      System.out.println("Não conectou"); 
      resultado=false; 
    }
    return resultado;
  }   
}

Teste.java

public class Teste {

  public static void main (String[] args) {
    String nome="luiz";
    String senha="luiz132";
    Validador validador=new Validador();
    validador.validar(nome,senha);
  }
}

edit: Tinha colocado a mesma classe nos dois codes :lol:

3 Respostas

g4j

teu if na classe Validador tem que ser assim:

if(pass.equals(pwd)){

veja mais sobre, aqui

Natalia_Lima

Vc ja viu quais sao os valores que estão guardados em “pass” e “pwd” quando passam pelo if?
Tenta imprimir eles antes do if pra ver se realmente sao iguais, pra ter certeza do que está retornando do seu select.

Além disso, siga a dica aí do g4j e use o equals.

kmunga

Valeu pela ajuda ai, utilizei a dica do G4J e funcionou :smiley:

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