Janela de login [resolvido]

5 respostas
C_Lucas

Boa noite.
Bom estou tentando criar uma janela de login para uma determinada classe que criei prém enfrento algumas dificuldades. Construi a janela e criei algumas instruções para a conexão e verificação porém está dando errado ao tentar se conectar ao BD. Segue baixo o código:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.util.*;

public class applylogin extends JFrame {
    JLabel l_titulo2,l_nome,l_pass;
    JTextField t_nome;
    JPasswordField p_pass;
    JButton b_login;
    public applylogin(){
     Container janela = getContentPane();
     setLayout(null);
     setTitle("SnackBar");

 
     l_nome = new JLabel("Nome do usuário:");
     l_nome.setBounds(24,80,120,50);
     l_pass = new JLabel("Digite a sua senha:");
     l_pass.setBounds(24,125,120,50);
  

     t_nome = new JTextField();
     t_nome.setBounds(130,96,120,22);
     p_pass = new JPasswordField();
     p_pass.setBounds(130,140,120,22);


     b_login = new JButton("Login");
     b_login.setBounds(55,197,100,36);


 //action dos botões...

     b_login.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e){
if(t_nome.getText().equals("") || p_pass.getText().equals("")){
    JOptionPane.showMessageDialog(null,"Usuário ou senha inválida","ERROR",JOptionPane.ERROR_MESSAGE,null);
}
else{
    try{
        String urllogin ="jdbc:odbc:admin_user";
        String usernamelogin ="";
        String passwordlogin ="";
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection conexaologin;
        conexaologin = DriverManager.getConnection(urllogin,"","");
        Statement statementlogin = conexaologin.createStatement();
        String SQL = "SELECT Codigo,nome_do_usuario,senha_do_usuario FROM usuario WHERE nome_do_usuario = '"+ t_nome.getText()+";";
        ResultSet resultsetlogin = statementlogin.executeQuery(SQL);
        while(resultsetlogin.next()){
            String name_for_client = resultsetlogin.getString("nome_do_usuario");
            String password_for_client =resultsetlogin.getString("senha");

        if(t_nome.getText().equals(name_for_client)&& p_pass.getText().equals(password_for_client)){
            JOptionPane.showMessageDialog(null,"Seja bem vindo"+t_nome.getText(),"Seja bem vindo",JOptionPane.ERROR_MESSAGE);
        }
        }

    }

    catch(Exception event){
        {event.printStackTrace();
 {JOptionPane.showMessageDialog(null,"ERRO AO CONECTAR","ERRO",JOptionPane.ERROR_MESSAGE,null);
    }
    }
    t_nome.setText("");
    p_pass.setText("");
    }

}
         }});

    janela.add(l_nome);
    janela.add(l_pass);
    janela.add(t_nome);
    janela.add(p_pass);
    janela.add(b_login);
    setSize(400,360);
    setLocationRelativeTo(null);
    setResizable(false);
    setVisible(true);
    }

    public static void main(String[] args) {
        applylogin app = new applylogin();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

Segundo o debugguer a um erro na linha 51. Alguém poderia me auxiliar como fazer uma janela de login? Agradeço-lhes pela atenção.

5 Respostas

C_Lucas

Alguém me ajude por favor.

J

E como resolveu?
era um ’ ’ ’ que estava faltando?

C_Lucas

A parte importante do código é essa

b_login.addActionListener(new ActionListener(){   
         public void actionPerformed(ActionEvent e){   
if(t_nome.getText().equals("") || p_pass.getText().equals("")){   
    JOptionPane.showMessageDialog(null,"Usuário ou senha inválida","ERROR",JOptionPane.ERROR_MESSAGE,null);   
}   
else{   
    try{   
        String urllogin ="jdbc:odbc:admin_user";   
        String usernamelogin ="";   
        String passwordlogin ="";   
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");   
        Connection conexaologin;   
        conexaologin = DriverManager.getConnection(urllogin,"","");   
        Statement statementlogin = conexaologin.createStatement();   
        String SQL = "SELECT Codigo,nome_do_usuario,senha_do_usuario FROM usuario WHERE nome_do_usuario = '"+ t_nome.getText()+"' AND senha_do_usuario ='"+p_pass.getText()+"'";   
        ResultSet resultsetlogin = statementlogin.executeQuery(SQL);   
        while(resultsetlogin.next()){   
            String name_for_client = resultsetlogin.getString("nome_do_usuario");   
            String password_for_client =resultsetlogin.getString("senha_do_usuario");   
  
        if(t_nome.getText().equals(name_for_client)&& p_pass.getText().equals(password_for_client)){   
            JOptionPane.showMessageDialog(null,"Seja bem vindo"+t_nome.getText(),"Seja bem vindo",JOptionPane.INFORMATION_MESSAGE);   
        }   
        }   
  
    }   
  
    catch(Exception event){   
        {event.printStackTrace();   
{JOptionPane.showMessageDialog(null,"ERRO AO CONECTAR","ERRO",JOptionPane.ERROR_MESSAGE,null);   
    }   
    }   
    t_nome.setText("");   
    p_pass.setText("");   
    }

Esse é o algoritmo correto, eu estava errado na linha 16 onde digitei o seguinte.

String SQL = "SELECT Codigo,nome_do_usuario,senha_do_usuario FROM usuario WHERE nome_do_usuario = '"+ t_nome.getText()+";";

Era algo sem nexo, esqueci de dizer os parâmetros de verificação do campo no banco de dados .

M

Por esse e outros motivos é muito melhor usar PreparedStatement.

C_Lucas

Pode crer j fui instruido a fazer isso por causa do sql injection, parece um mau hábito :smiley: :lol:

Criado 19 de junho de 2010
Ultima resposta 20 de jun. de 2010
Respostas 5
Participantes 3