Duvidas sobre tela de login

Estou com problemas para fazer uma tela de login e senha já criei a tabela, mas não estou obtendo sucesso segue meu código abaixo não da erro mas também não executa.

public void verificaDados(){
if(jtxtlogin.getText().equals("") || jPasSenha.getText().equals("")){

        JOptionPane.showMessageDialog(null, "Campos não preenchidos.");

    }else{
        try{
            
            String sql = "SELECT * FROM login WHERE usuario like'"+
              jtxtlogin.getText()+"'and senha like'"+jPasSenha.getPassword()+"'";
              PreparedStatement ps = (PreparedStatement) con.getConexao().prepareStatement(sql);
              
              ps.execute();

              ResultSet rs = ps.executeQuery();

             if(rs.first()){
                 Cadfunc cad = new Cadfunc();
                 cad.setCodigo(Integer.valueOf(rs.getInt("idlogin")));
                 cad.setNome(rs.getString("nome"));
                 cad.setUsuario(rs.getString("usuario"));
                 cad.setSenha(rs.getString("senha"));

                 ps.close();
                 rs.close();

                JOptionPane.showMessageDialog(null, "Bem vindo."+jtxtlogin.getText());
                Login l = new Login();
                l.dispose();
                Cadastro c = new Cadastro();
                c.show();
             }

        }catch(Exception e){

            JOptionPane.showMessageDialog(null, "Campos não preenchidos."+e.getMessage());

        }


}

}

}

[code]public void verificaDados(){
if(jtxtlogin.getText().equals("") || jPasSenha.getText().equals("")){

JOptionPane.showMessageDialog(null, “Campos não preenchidos.”);

}else{
try{

String sql = “SELECT * FROM login WHERE usuario like’”+
jtxtlogin.getText()+"‘and senha like’"+jPasSenha.getPassword()+"’";
PreparedStatement ps = (PreparedStatement) con.getConexao().prepareStatement(sql);

ps.execute();

ResultSet rs = ps.executeQuery();

if(rs.first()){
Cadfunc cad = new Cadfunc();
cad.setCodigo(Integer.valueOf(rs.getInt(“idlogin”)));
cad.setNome(rs.getString(“nome”));
cad.setUsuario(rs.getString(“usuario”));
cad.setSenha(rs.getString(“senha”));

ps.close();
rs.close();

JOptionPane.showMessageDialog(null, “Bem vindo.”+jtxtlogin.getText());
Login l = new Login();
l.dispose();
Cadastro c = new Cadastro();
c.show();
}

}catch(Exception e){

JOptionPane.showMessageDialog(null, “Campos não preenchidos.”+e.getMessage());

}

}
}

} [/code]

:evil:

tópico duplicado:

http://www.guj.com.br/java/250157-duvidas-sobre-tela-de-login

algumas considerações:

  • faltou colocar % no like e espaço antes e depois dos apóstofos;
  • agora, mais importante é que não se compara usuário e senha com like. ou o usuário está cadastrado ou não. ou senha é exatamento o que foi digitado ou não;

tente:

String sql = "SELECT * FROM login WHERE usuario = '"+ jtxtlogin.getText()+"' and senha = '"+jPasSenha.getPassword()+"'";

Só para constar, faça a inferência assim:

"".equals(jtxtlogin.getText()) || "".equals(jPasSenha.getText()))

Passe parâmetros ao invés de passar o próprio valor da variável, você evitará um grande problema desta maneira. Pesquise por: SQL INJECTION.

select * from tabela where usuario =? and senha=?
ps.setString(1, usuario)
ps.setParameter(2, senha);

abraço!

[quote=rijava]Passe parâmetros ao invés de passar o próprio valor da variável, você evitará um grande problema desta maneira. Pesquise por: SQL INJECTION.

select * from tabela where usuario =? and senha=?
ps.setString(1, usuario)
ps.setParameter(2, senha);

abraço![/quote]

Muito obrigado pela atenção, espero um dia poder ajuda-lo também.

[quote=alcionj]Só para constar, faça a inferência assim:

[code]
“”.equals(jtxtlogin.getText()) || “”.equals(jPasSenha.getText()))

[/code][/quote]

Muito obrigado…Agradecido mesmo.

[quote=alcionj]Só para constar, faça a inferência assim:

[code]
“”.equals(jtxtlogin.getText()) || “”.equals(jPasSenha.getText()))

[/code][/quote]

Muito obrigado pela força…

[quote=wbdsjunior]tópico duplicado:

http://www.guj.com.br/java/250157-duvidas-sobre-tela-de-login

algumas considerações:

  • faltou colocar % no like e espaço antes e depois dos apóstofos;
  • agora, mais importante é que não se compara usuário e senha com like. ou o usuário está cadastrado ou não. ou senha é exatamento o que foi digitado ou não;

tente:

String sql = "SELECT * FROM login WHERE usuario = '"+ jtxtlogin.getText()+"' and senha = '"+jPasSenha.getPassword()+"'";[/quote]

Muito obrigado.
Desculpe por duplicar o post…valew