Como Validar Login e Senha no java Desktop [ RESOLVIDO ]

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);
            }
        });
    }
  
}

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:

[code] 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;
}[/code]

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]

VALEU CONSEGUI !! OBRIGADO !

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+


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);
        }

    }