Problema else =/

9 respostas
C

Da uma olhadinha no script pq ele não entra ir no else… alguem dica ai?

Statement statement = (Statement) conn.createStatement(); ResultSet rs = statement.executeQuery("SELECT * FROM login WHERE login='"+login+"' AND senha='"+senha+"'"); if (rs.next()) { String check_login = rs.getString("login"); String check_senha = rs.getString("senha"); if(check_login != ""+login+"" && check_senha != ""+senha+""){ labelNomeCompleto.setText(rs.getString("nome_completo")); }else{ labelNomeCompleto.setText(""); } }

9 Respostas

Scoobydoo

bem facil

Statement statement = (Statement) conn.createStatement(); ResultSet rs = statement.executeQuery("SELECT * FROM login WHERE login='"+login+"' AND senha='"+senha+"'"); if (rs.next()) { String check_login = rs.getString("login"); String check_senha = rs.getString("senha"); if(check_login != ""+login+"" && check_senha != ""+senha+""){ labelNomeCompleto.setText(rs.getString("nome_completo")); }else{ labelNomeCompleto.setText(""); } }
Note que estás fazendo IF (rs.nextt())
ele nem chega a executar seu procedimento pois ele pode não estar encontrando nada no Select entende…
e nunca o check_login vai ser diferente do seu Login pois voce está fazendo check_login = rs.getString(“login”); e em seu Select um Where = login…
entende cara.
Voce está fazendo uma comparação sem sentido

pmlm

Se estás a fazer uma query por login e senha, ele só entra no if (rs.next()) se de facto encontrou esse login e senha.
Não faz sentido depois lá dentro estar a verificar se o login e senha da Base de Dados são iguais aos dados pelo utilizador. Para chegar a esse código eles já têm de ser iguais.

andrerios

Nao use operadores pra comparar String… use o metodo equals() ou equalsIgnoreCase)…

Felagund

o problema está no IF

não se compara String usando o ==, usa-se o metodo equals()

if(check_login.equals(login) && check_senha.equals(senha)){    
    labelNomeCompleto.setText(rs.getString("nome_completo"));    
  }else{    
     labelNomeCompleto.setText("");    
  }
renamed
Statement statement = (Statement) conn.createStatement();  
ResultSet rs = statement.executeQuery("SELECT * FROM login WHERE login='"+login+"' AND senha='"+senha+"'");  
if (rs.next()) {  
           labelNomeCompleto.setText(rs.getString("nome_completo"));  
}else{  
           labelNomeCompleto.setText("");  
}

esse código equivale ao seu :smiley:

ViniGodoy

O código do renamed é sensível a dependency injection.

Note que alguém poderia colocar uma senha como:

’ OR (login='vinicius

E seu SQL se transformaria em:
SELECT * FROM login WHERE login=‘vinicius’ AND senha=’’ OR login=‘vinicius’

Para evitar esse problema, use PreparedStatement, no lugar do Statement. A comparação que você fez atenua o problema, mas está longe de ser a solução ideal. Até pq, outro SQL possível é:
"’; UPDATE login SET senha=‘123’;

O que permitiria um login facil no seu sistema, na segunda tentativa.

C

Statement statement = (Statement) conn.createStatement(); ResultSet rs = statement.executeQuery("SELECT * FROM login WHERE login='"+login+"' AND senha='"+senha+"'"); String check_login = rs.getString("login"); String check_senha = rs.getString("senha"); if(check_login.equals(login) && check_senha.equals(senha)){ labelNomeCompleto.setText(rs.getString("nome_completo")); }else{ labelNomeCompleto.setText("kk"); }

Galera, vou te mostra por exemplo

Login: admin, Senha: admin dai ele vai aparece Nome Completo: Admin, se for coloca invalido ex. admin2 admin dai tem q aparece msg erro mas não to conseguindo tenta descobre o problema else… o que eu faço pra consegue ir até else…

C

Consegui descobri o problema…segue a baixo o antes e o depois para quem quiser usar o codigo.
Obrigado

Antes:

Statement statement = (Statement) conn.createStatement(); ResultSet rs = statement.executeQuery("SELECT * FROM login WHERE login='"+login+"' AND senha='"+senha+"'"); if (rs.next()) { String check_login = rs.getString("login"); String check_senha = rs.getString("senha"); if(check_login.equals(login) && check_senha.equals(senha)){ labelNomeCompleto.setText(rs.getString("nome_completo")); }else{ labelNomeCompleto.setText("Registro não encontrado"); } }

Depois:

Statement statement = (Statement) conn.createStatement(); ResultSet rs = statement.executeQuery("SELECT * FROM login WHERE login='"+login+"' AND senha='"+senha+"'"); if (rs.next()) { String check_login = rs.getString("login"); String check_senha = rs.getString("senha"); if(check_login.equals(login) && check_senha.equals(senha)){ labelNomeCompleto.setText(rs.getString("nome_completo")); } }else{ labelNomeCompleto.setText("Registro não encontrado"); }

M

Faltou usar PreparedStatement. Ou você quer que alguém que tenha um apóstrofo na senha acabe com a persistência?

Criado 21 de janeiro de 2010
Ultima resposta 21 de jan. de 2010
Respostas 9
Participantes 8