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()
Statementstatement=(Statement)conn.createStatement();ResultSetrs=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
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.
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
criscompbr
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
marcobiscaro2112
Faltou usar PreparedStatement. Ou você quer que alguém que tenha um apóstrofo na senha acabe com a persistência?