Criar tela login e verificar usuario e senha no banco

Bom dia, estou com dúvidas de como criar uma tela de login.
idéia:

tela com usuario e senha, ao dar OK, verificar na tabela do banco dados SQL Server se existe o usuario, se sim, lebera o sistema, caso contrario, da erro.

ja tenho a tabela no banco, porem, tenho duvida no codigo e na chamada script (select).

veja se ajuda…
jTextField1 é o campo do login e jPasswordField1 é o campo da senha…

if(jTextField1.getText().equals("") || jPasswordField1.getText().equals("")){
            JOptionPane.showMessageDialog(null, "Login ou Senha inválido.", "Oi. Simples assim!", JOptionPane.ERROR_MESSAGE);
        }else{

            Connection con = null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                con = DriverManager.getConnection("jdbc:mysql://10.20.194.170:3306/oi","usuario1","");
                Statement stm = con.createStatement();
                String SQL = "Select * from usuarios where login = '"+ jTextField1.getText()+"';";
                ResultSet rs = stm.executeQuery(SQL);

                while(rs.next()) {
                    String loginn = rs.getString("login");
                    String senhaa = rs.getString("senha");
                    String nomee = rs.getString("nome");
                    String matriculaa = rs.getString("matricula"); //ctx
                    String emaill = rs.getString("email");
                    String perfill = rs.getString("perfil");

                    if(jTextField1.getText().equals(loginn) && jPasswordField1.getText().equals(senhaa)){
                        JOptionPane.showMessageDialog(null,"Seja bem vindo: " + nomee,"Oi. Simples assim!",JOptionPane.INFORMATION_MESSAGE);
                        jLabel2.setText(nomee);
                        jLabel5.setText(matriculaa); //ctx
                        jLabel6.setText(emaill);
                        jLabel11.setText(perfill); //administrador ou usuário
                    }else{
                        JOptionPane.showMessageDialog(null,"Login ou Senha inválidos.","Oi. Simples assim!",JOptionPane.ERROR_MESSAGE);
                        jPasswordField1.setText("");
                    }
                }
            }catch(SQLException e){
                e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
                JOptionPane.showMessageDialog(null,"Erro na conexão, com o banco de dados!","Oi. Simples assim!",JOptionPane.WARNING_MESSAGE);
            }catch (ClassNotFoundException e) {
                e.printStackTrace();
            }finally {
                try{
                    con.close();
                }catch(SQLException onConClose){
                    //System.out.println("Houve erro no fechamento da conexão");
                    JOptionPane.showMessageDialog(null,"Erro na conexão, com o banco de dados!","Oi. Simples assim!",JOptionPane.WARNING_MESSAGE);
                    onConClose.printStackTrace();
                }
            } // fim do bloco try-catch-finally
        }//else do login e senha vazios
        jTextField1.setText("");
        jPasswordField1.setText("");
2 curtidas

Algumas observações sobre o código acima:

1 Sempre use PreparedStatement

String SQL = " SELECT usuario, senha FROM usuarios  WHERE usuario = ?  and senha = ?
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, usuario.getUsuario());
pstmt.setString(1, usuario.getSenha());

2 Nunca crie sua conexão junto com a classe do seu formulario, separe uma classe especifica para conexão.

3 Crie uma outra classe espeficifica para a validação desse login.

4 Evite sempre o select * , coloque realmente os campos que vai precisar na query por questão de performance.

Com tudo bem separado sua aplicação fica mais facil de manter.

1 curtida

[quote=Pedrosa]Algumas observações sobre o código acima:

1 Sempre use PreparedStatement

String SQL = " SELECT usuario, senha FROM usuarios  WHERE usuario = ?  and senha = ?
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, usuario.getUsuario());
pstmt.setString(1, usuario.getSenha());

2 Nunca crie sua conexão junto com a classe do seu formulario, separe uma classe especifica para conexão.

3 Crie uma outra classe espeficifica para a validação desse login.

4 Evite sempre o select * , coloque realmente os campos que vai precisar na query por questão de performance.

Com tudo bem separado sua aplicação fica mais facil de manter.[/quote]

bela observação…

[quote=Pedrosa]Algumas observações sobre o código acima:

1 Sempre use PreparedStatement

String SQL = " SELECT usuario, senha FROM usuarios  WHERE usuario = ?  and senha = ?
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, usuario.getUsuario());
pstmt.setString(1, usuario.getSenha());

2 Nunca crie sua conexão junto com a classe do seu formulario, separe uma classe especifica para conexão.

3 Crie uma outra classe espeficifica para a validação desse login.

4 Evite sempre o select * , coloque realmente os campos que vai precisar na query por questão de performance.

Com tudo bem separado sua aplicação fica mais facil de manter.[/quote]

como faz para ele receber o que eu digito no jtextField senha e nome???
ex:
mas não tá dando certo?
mais ou menos assim???

protected void entrar(){ LoginControl lo = new LoginControl(); login = lo.listarlogi("%"+ tf_nome.getText().trim());

Gostaria de saber qual é o código para criar uma tela de login e senha só que usando o banco de dados do access.

E como faço para validar o login e a senha. quando o usário entrar com a mesma.