Como Validar Login e Senha no java Desktop [ RESOLVIDO ]

4 respostas
B

PRECISO DE UMA AJUDA:
Bom, eu ja criei o Jform, o jtexfieldLogin, JpassSenha e dois botões Gravar e Cancelar,
Ja criei uma Classe conexão, pois bem preciso que depois que o usuário digitar o login e senha
faça uma verificação no banco (SQLServer) se o usuário existe ou não se existir chama a tela de menu
senão aparece uma mensagem de usuário invalido e volta para a tela login.

AGRADEÇO DESDE JÁ PELA FORÇA.

import br.com.fba.conexao.Conexao_banco;


/**
 * @author Fogaca
 */
public class Login extends javax.swing.JFrame {
    
    Conexao_banco con_login;

    //===================================================================================
   public String url ;
   public String texto;     
   public String caminho1 = "jdbc:jtds:sqlserver://localhost:1433/db_oficial";
   public String caminho2 = "jdbc:jtds:sqlserver://localhost:1433/db_teste";
   public String titulo1 = "BASE OFICIAL";
   public String titulo2 = "BASE TESTE";
   //===================================================================================

    /** CONSTRUTOR */
    public Login() {
        initComponents();
    }

   
 
	//MEU COMBOBOX QUE ME SELECIONA QUAL CAMINHO/BANCO MINHA APLICAÇÃO VAI SE CONECTAR
    private void ComboBancoLoginActionPerformed(java.awt.event.ActionEvent evt) {                                                

        if(evt.getActionCommand().equals("comboBoxChanged"))
        {
        if(ComboBancoLogin.getSelectedItem().equals("BASE OFICIAL")){
            this.texto = titulo1;
            this.url = caminho1;
            lbLoginLogin.setText(texto);
        }else if(ComboBancoLogin.getSelectedItem().equals("BASE TESTE")){
            this.texto = titulo2;
            this.url = caminho2;
            lbLoginLogin.setText(texto);
        }else if(ComboBancoLogin.getSelectedItem().equals("Selecionar Base...")){
            this.url = "";
          }
        }

    }                                               
	
	//BOTÃO CANCELA LOGIN
    private void btCancelaLoginActionPerformed(java.awt.event.ActionEvent evt) {                                             
        dispose();
    }                                              
	
	
	/*
	PRECISO VAZER A VALIDAÇÃO NESTE BOTÃO APÓS DEFINIR QUAL CAMINHO ELE IRÁ SE CONECTAR.
	*/
	//BOTÃO QUE CONFIRMA LOGIN, PASSA O CAMINHO DO BANCO E CHAMA A TELA DE MENU PRINCIPAL
    private void btConfirmaLoginActionPerformed(java.awt.event.ActionEvent evt) { 
	
        new Principal(this.url, this.texto).show();//PARAMETROS QUE A TELA PRINCIPAL IRA RECEBER
        dispose();

    }                                               

    //METODO MAIN DA MINHA TELA LOGIN
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Login().setVisible(true);
            }
        });
    }
  
}

4 Respostas

J

Você precisa ter um UsuarioDAO e nele fazer a consulta para ver se esse usuário existe lá no seu SQLServer, não faça esse tipo de consulta na camada de apresentação do seu sistema, faça isso no DAO e retorne um objeto Usuario ou null, fica mais "limpo".

Algo assim:
public Usuario login(String login, String senha) throws SQLException {
        Usuario usuario = null;
        String sql = "SELECT * FROM Usuario WHERE login=? AND senha=?";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setObject(1, login);
        ps.setObject(2, senha);
        ResultSet rs = ps.executeQuery();
        if (rs.next()) {
            usuario = new Usuario();
            usuario.setNomeUsuario(rs.getString("NOME"));
            /// ....

        }
        return usuario;
    }
Nesse caso ou ele retorna um objeto Usuario completo ou retorna null. Na camada de apresentação:
Usuario usuario = new UsuarioDAO().login("fulano", "senha123");
if(usuario==null){
    System.out.println("Não existe ou dados incorretos");
}

Dica: use as nomeclaturas padrões do Java, ex: ao invés de [color=red]con_login[/color] use [color=darkblue]conexaoLogin[/color]

B

VALEU CONSEGUI !! OBRIGADO !

P

Pessoal boa tarde,

Estou enfrentando um problema para validar Login e Senha no JAVA Desktop, poderiam me auxilia nessa tarefa.

O erro é aquele típico te Objecto não Instanciado, mas não estou usando nenhum Objecto que não esteja Instanciado. erro e Código Abaixo.

Erro.

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at Classes.UsuarioDAO.localizar(UsuarioDAO.java:30)

at Classes.GuiLogin$1.actionPerformed(GuiLogin.java:54)

Codigo.
Parte da Classe GuiLogin

private void definirEventos() {

btLogar.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
[b]    if(checarLogin.localizar(tfLogin.getText())){ //Chamo o método localizar, e passo por parâmetro o que o usuário digitar no campo login.[/b]
                frame.setVisible(false);
                Classes.MenuPrincial tela = new Classes.MenuPrincial();
                tela.setVisible(true);
            }
            else{
                
               JOptionPane.showMessageDialog(null,"Login ou Senha incorretas!");
            }
        }
    });
   
    btCancelar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    });
}
Classe UsuarioDAO - Metodo localizar

public boolean localizar(String Login){

mensagem = Gravado com Exito;

boolean verificado = true;

try{

sql = select Login from Tcc.Usuarios where Login = ?’”;

System.out.println(Login);

statement = bd.connection.prepareStatement(sql);\ O erro ocorre nesta linha, pois tem um print com o login e está normal.

statement.setString(1, Login);

statement.executeQuery();

resultSet = statement.executeQuery();

if (resultSet.next()){

String LoginBanco = resultSet.getString(Login);

System.out.println(LoginBanco);

if(LoginBanco.equals(Login)){

verificado = true;

statement.close();

}else{

JOptionPane.showMessageDialog(null, Usuario não Confere!);

}

}

}

catch (SQLException erro){

mensagem = Falha na Operação!! + erro.toString();
}
    return verificado;
}

Vlw Gente t+

B
import java.sql.*;
import javax.swing.*;

//METODO DE CONEXÃO COM O BANCO DE DADOS SQLSERVER
public class Conexao{

    final private String driver = "net.sourceforge.jtds.jdbc.Driver";
    final private String url = "jdbc:jtds:sqlserver://servidor:1433/banco";
    final private String usuario = "usuario";
    final private String senha = "senha";
    private Connection conexao;
    public Statement statment;
    public ResultSet resultset;

    public boolean conecta(){

        boolean result = true;
        try{
            Class.forName(driver);
            conexao = DriverManager.getConnection(url, usuario, senha);
          JOptionPane.showMessageDialog(null, "Conectou no Banco");
        }
        catch(ClassNotFoundException Driver){
            JOptionPane.showMessageDialog(null, "Conexão não Localizada"+Driver);
            result = false;
        }
        catch(SQLException Fonte){
            JOptionPane.showMessageDialog(null, "Deu erro na conexão "+"Com a Fonte de Dados: " +Fonte);
            result = false;
        }
        return result;
    }

    //METODO DESCONECTA
    public void desconecta(){
        boolean result = true;
      try{
          conexao.close();
          JOptionPane.showConfirmDialog(null, "Banco Fechado");
      }
      catch(SQLException erroSQL){
          JOptionPane.showConfirmDialog(null, "Não Foi Possivel" +
                  "fechar o banco de dados: "+erroSQL.getMessage());
          result = false;
      }
    }

    //METODO EXECUTA SQL
    public void executeSQL(String sql){
        try{//Statement navegavel
            statment = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//CAMINHO DA CONEXÃO
            resultset = statment.executeQuery(sql);// SQL QUE SERA EXECUTADO
        }
        catch(SQLException sqlex){
            JOptionPane.showConfirmDialog(null,"Não foi possivel"+
                    " executar o Comando SQL, "+sqlex+", o sql passado foi o.: "+sql);
        }
    }
}
// CLASSE QUE VALIDA CONEXÃO

    private void btConfirmaLoginActionPerformed(java.awt.event.ActionEvent evt) {

            String CadastroSQL = "SELECT COUNT(*) "
                               + "FROM cad_Operador "
                               + "WHERE nome_operador= '"+tfUsuarioLogin.getText()+"' "
                               + "AND nome_password= '"+jPassSenhaLogin.getText()+"' ";
            
            con_login = new Conexao_banco();
            con_login.conecta(url);
            con_login.executeSQL(CadastroSQL);
            try{
                if(this.url.equals("")){
                   JOptionPane.showMessageDialog(null, "Selecionar Base...");
                }else
                con_login.resultset.next();  //ERRO SE NÃO RETORNAR NADA !
                if (con_login.resultset.getInt(1) >= 1) {
                //JOptionPane.showMessageDialog(null, "Usuário e Senha Correto!");
                    new Principal(this.url, lbLoginLogin.getText()).show();
                    dispose();
                    // LOGIN ENCONTADO E CORRETO
                } else {
                JOptionPane.showMessageDialog(null, "USUÁRIO OU SENHA INCORRETO!", "ATENÇÃO!",JOptionPane.WARNING_MESSAGE);
                    // USUÁRIO NÃO ENCONTRADO E SENHA INCORRETA.
                }
        }catch(SQLException erro){
            JOptionPane.showMessageDialog(null, erro);
        }

    }
Criado 24 de fevereiro de 2011
Ultima resposta 13 de jul. de 2012
Respostas 4
Participantes 3