IF não funciona

24 respostas
P
try{
            rs=stmt.executeQuery("SELECT *FROM usuarios where login ='paula'");
            while(rs.next()){
                if (rs.getString("senha").equals("1234"))
                     System.out.println("OK");
                
                else
                    System.out.println("Nops");
            }
        }catch (Exception e){
            System.out.println("erro \n\n"+ e);

            }

quando eu executo imprime sempre "Nops" sendo que a senha registrada no banco eh 1234 mesmo...
e agora?

24 Respostas

hudsonpereira

Na Query o * está junto ao FROM … veja se isso não está te atrapalhando.

leoviniga

troca *FROM pra * FROM e vê se vai

P

Não… continua o mesmo erro…=/

P

O erro não está na hora de buscar os dados, pois ja testei isso…
ele busca, mas na hora de conferir se as senhas são iguais da erro

hudsonpereira

Imprime essa senha aí… veja o valor dela. Teste para ver se o banco está retornando corretamente a linha cujo login é o especificado.

P

Foi exatamente assim que eu tentei, a hora que eu imprimei deu 1234…
mas na hora de conferir se estão iguais, mesmo estando, o sistema diz que está errado

danilomunoz

paulat ... gostei do título do post !?

... é muito difícil um IF não funcionar ... faz muito tempo que ele existe e ele é bem "veiáco" no assunto ... rs ... veja a condição sempre!!

Adicione esta linha ao seu código e mande o resultado de volta:

try {
			rs = stmt.executeQuery("SELECT *FROM usuarios where login ='paula'");
			while (rs.next()) {
				String senha = rs.getString("senha");
				System.out.println(senha);

				if (senha.equals("1234")) {
					System.out.println("OK");
				} else {
					System.out.println("Nops");
				}
			}
		} catch (Exception e) {
			System.out.println("erro \n\n" + e);
		}

Até mais,

M

será que na base de dados o 1234 pode está com espaço antes ou depois já viu isso?

paulo1911

Olá paula,

tente o seguinte:

1º mude a sql separando o asterisco do from;
E tente isso:

try{  
            rs=stmt.executeQuery("SELECT *FROM usuarios where login ='paula'");  
            while(rs.next()){  
                if (rs.getString("senha").toString().equals("1234"))  {
                     System.out.println("OK");  
                  
               } else {
                    System.out.println("Nops");  
            }  
        }catch (Exception e){  
            System.out.println("erro \n\n"+ e);  
   
            }

Espero ter ajudado
Fallow

danilomunoz

ops … não vi que estavam respondendo …

então … tenta ver se não tem espaços, carateres especiais … etc

P

Naaada

P

.

M

O nosso amigo danilomunoz só acrescentou a chave do if e else mas acho que ele não sabia que quando usamos apenas um linha de código não é obrigatorio colocar chaves funciona da mesma forma porém eu prefiro usar chaves por boas práticas.

Hewerson

cara ao inves de “senha”, veja o numero da coluna e indique esse numero, as vezes dah certo

danilomunoz

ops … sei sim! arrumei por boas práticas mesmo …

E coloquei o rs.getString(“senha”) em uma variável para imprimir e reusar no if também.

P

continua sem funcionar e não faz sentido…
deveria estar funcionando…quando peço para imprimir a senha da 1234 mesmo, sem espaços e nada de estranho… simplesmente exatamente igual ao que esta no if… e ai?!

danilomunoz

coloca isso no teu código por favor:

String senha = rs.getString("senha"); for (char c : s.toCharArray()) { System.out.print(c + "(" + (int)c + ") "); } System.out.println();

E manda o resultado pra nós …

Até mais,

danilomunoz

ops …

troca s.toCharArray por senha.toCharArray

P

Melhor dexar pra lá…
acabei de descobrir que com quarquer outro login da certo…
não sei ainda pq com esse não da… mas ok
Obrigada mesmo assim

P

hahahaha Descobri… tinah espaço depois, coisa que eu nao conseguia identificar sem prestar atenção…
Muito obrigada!

ViniGodoy

paulo1911:
Olá paula,

tente o seguinte:

if (rs.getString("senha").toString().equals("1234"))  {

O método getString() já retorna uma String. Não tem porque chamar toString() nele.

Tente fazer o if assim:

if (rs.getString("senha").trim().equals("1234"))

Se isso funcionar, é pq seu banco de dados adicionou espaços ao final da senha. Alguns bancos fazem isso para campos do tipo string (como VARCHAR).
Se isso não funcionar, tente usar um depurador para ver exatamente o que está acontecendo.

danilomunoz

maravilha!!! rs

sorte que não é bug no if …

valeu!

x111

Tente isso.

SELECT TRIM(senha) as senha FROM usuarios where login ='paula'

Se o campo no banco for CHAR(Tamanho) pode estar retornando espaços após o valor.

hudsonpereira

gente, já deu certo… eram espaços… ^^

Criado 12 de janeiro de 2011
Ultima resposta 12 de jan. de 2011
Respostas 24
Participantes 9