Problema Login

Olá, estou com problemas no meu Login…
Quando informado o nome de usuário e a senha corretamente o sistema irá redirecionar para a Tela Principal do Sistema “telaPrincipal” porém isso não está acontecendo.
Muito obrigado…

[code]
public class Login extends javax.swing.JFrame {
conexaoMySql obj_conexao = new conexaoMySql();
conexaoMySql objConexao = new conexaoMySql();
conexaoMySql objConexaoLogin = new conexaoMySql();

public Login() {
initComponents();

}

private void btLoginActionPerformed(java.awt.event.ActionEvent evt) {
logar();

       }                                       

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            new Login().setVisible(true);
        }
    });
}

public void logar (){
try {

        obj_conexao.conecta();
        obj_conexao.executeSQL("SELECT NMUSUARIO, SENHA FROM usuario");
        obj_conexao.resultset.first();
        tfNmUsuario.setText(obj_conexao.resultset.getString("NMUSUARIO"));
        pfSenha.setText(obj_conexao.resultset.getString("SENHA"));
        
        if (tfNmUsuario.equals(obj_conexao.resultset.getString("NMUSUARIO")) && pfSenha.equals(obj_conexao.resultset.getString("SENHA"))){
           new telaPrincipal().show();
            this.dispose(); 
    }
       
         
    } catch (SQLException erro) {
        JOptionPane.showMessageDialog(null,"Não Conseguiu Realizar o login"+erro);
    }

}[/code]

Acredito que você tenha que pegar os valores da caixa de login e senha.
Depois fazer um select onde, Where, o nome da senha e do login sejam iguais aos que estão no campo.
Caso tenha algum registro ele acessará.

Era essa sua dúvida ?

Então o código abaixo está tudo errado?

[code]public void logar (){
try {

        obj_conexao.conecta();  
        obj_conexao.executeSQL("SELECT NMUSUARIO, SENHA FROM usuario");  
        obj_conexao.resultset.first();  
        tfNmUsuario.setText(obj_conexao.resultset.getString("NMUSUARIO"));  
        pfSenha.setText(obj_conexao.resultset.getString("SENHA"));  
          
        if (tfNmUsuario.equals(obj_conexao.resultset.getString("NMUSUARIO")) && pfSenha.equals(obj_conexao.resultset.getString("SENHA"))){  
           new telaPrincipal().show();  
            this.dispose();   
    }  
         
           
    } catch (SQLException erro) {  
        JOptionPane.showMessageDialog(null,"Não Conseguiu Realizar o login"+erro);  
    }  

} [/code]

dá uma olhada neste material
http://www.guj.com.br/articles/7
vc vai fazer a seguinte query

String sql="SELECT NMUSUARIO, SENHA FROM usuario where login=? and password=? ";

Em que o login e a senha vc vai pegar dos seus componentes.

Um Exemplo de um dos meus projetos que envolve login:

Classe de comandos no BD:

public List<Auxiliar.Admin> consultaAdmin(String admin)
    {
        List Admin=new ArrayList();
        Auxiliar.Admin objAdmin=new Auxiliar.Admin();
        objConecta_BD = new Conecta_BD();
        Statement consulta;
        ResultSet retorno;
        String comando = "SELECT login,senha FROM admin WHERE login='"+admin+"'";
        try
        {
            consulta=objConecta_BD.carregarServidor().createStatement();
            retorno=consulta.executeQuery(comando);
            try
            {
                while(retorno.next())
                {
                    objAdmin.setLogin(retorno.getString("login"));
                    objAdmin.setSenha(retorno.getString("senha"));
                    Admin.add(objAdmin);
                }
            }
            finally
            {
                retorno.close();
                consulta.close();
                objConecta_BD.encerrarConexao();
            }
        }
        catch(Exception e)
        {
            objAdmin.setAdmin("");
            objAdmin.setSenha("");
            System.out.println("Erro consultaAdmin()"+e.getCause());
            JOptionPane.showMessageDialog(null,
                    "Erro:"
                   +"\nNão foi possível se conectar com o servidor do BD",
                    "Erro - Conexão", JOptionPane.ERROR_MESSAGE);
        }
        return Admin;
    }

Classe que faz o Login:

MÈTODO QUE VALIDA E REALIZA O LOGIN(obs: resumido, tirei as partes gráficas):

public void validaLogin()
    {
        //Objeto de Comandos_BD
        Banco.Comandos_BD objComandos_BD = new Banco.Comandos_BD();
        //Lista para receber o objeto da classe Admin
        java.util.List<Auxiliar.Admin> Admin = new java.util.ArrayList();
        Admin = objComandos_BD.consultaAdmin(this.AreaTexto_login.getText());
        if(Admin.get(0).getLogin().equals(AreaTexto_login.getText()) &&
           Admin.get(0).getSenha().equals(String.valueOf(AreaTexto_senha.getPassword())))
        {
            JOptionPane.showMessageDialog(null, "Bem Vindo(a) "+AreaTexto_login.getText(),
                                                "Realizado Login", JOptionPane.INFORMATION_MESSAGE);
            objAdmin_Menu = new Admin_Menu();
            objAdmin_Menu.setVisible(true);
            objAdmin_Menu.setLogin(AreaTexto_login.getText());
            objAdmin_Menu.setSenha(String.valueOf(AreaTexto_senha.getPassword()));
            validaPermissoes();
            this.dispose();
        }
        else
        {
            JOptionPane.showMessageDialog(null, "Login e/u senha errados!",
                                                "Erro", JOptionPane.ERROR_MESSAGE);
            AreaTexto_login.requestFocus();
        }
    }

Alterei o meu método “Logar”. Quando o botão “Acesso ao Sistema” é pressionado os campos de usuário e senha são preenchidos com os dados do banco de dados.
Alguém pode me dizer o que está errado.
Obrigado por postarem exemplos de códigos mas quero que me ajudem a fazer o meu…

Muito obrigado…
Abraços

[code]public void logar (){
try {

        obj_conexao.conecta();
        obj_conexao.executeSQL("SELECT NMUSUARIO, SENHA FROM usuario");
        obj_conexao.resultset.first();
        tfNmUsuario.setText(obj_conexao.resultset.getString("NMUSUARIO"));
        pfSenha.setText(obj_conexao.resultset.getString("SENHA"));
        
        while (tfNmUsuario.equals(obj_conexao.resultset.getString("NMUSUARIO")) && pfSenha.equals(obj_conexao.resultset.getString("SENHA"))){
           new telaPrincipal().show();
            this.dispose(); 
    }
       
         
    } catch (SQLException erro) {
        JOptionPane.showMessageDialog(null,"Não Conseguiu Realizar o login"+erro);
    }

}[/code]

foxvictor,

Vc tá confundindo as bolas…

Esse código:

obj_conexao.executeSQL("SELECT NMUSUARIO, SENHA FROM usuario"); obj_conexao.resultset.first();
Vai lhe retornar o primeiro usuário da tabela usuario.

Estabelecida a conexão com o bd, pq vc não usou o exemplo postados acima?Tira esse while e ponha um if, um login entre N entradas não é uma continuidade, mas uma exceção. Leia essa apostila: http://www.caelum.com.br/download/caelum-java-web-fj21.pdf

[quote=Ironlynx]foxvictor,

Vc tá confundindo as bolas…

Esse código:

obj_conexao.executeSQL("SELECT NMUSUARIO, SENHA FROM usuario"); obj_conexao.resultset.first();
Vai lhe retornar o primeiro usuário da tabela usuario.

Estabelecida a conexão com o bd, pq vc não usou o exemplo postados acima?Tira esse while e ponha um if, um login entre N entradas não é uma continuidade, mas uma exceção. Leia essa apostila: http://www.caelum.com.br/download/caelum-java-web-fj21.pdf [/quote]

Bom dia a todos.

Vai retornar o primeiro usuário se, e somente se, a conexão estabelecida retornar um ResultSet [color=darkred] bidirecional, ou seja, um ResultSet navegável[/color]

Em caso de ResultSet Unidirecional (Type_Forward_Only - Somente para frente), os métodos “first()”, “beforeFirst()”, “previous()”, “next()”, “last()” e “afterLast()”, não funcionam e disparam uma exceção. Os tipos de navegação possível são:

  1. Type_Forward_Only - Navegação somente para frente;
  2. Type_Scroll_Insensitive - Navegação nos dois sentidos, sendo que as alteração em tempo de execução não refletem no conteúdo da tabela.
  3. Type_Scroll_Sensitive - Similar ao Insensitive, só que neste caso as alterações refletem na tabela em tempo de execução.

Existe também os parâmetros “Concur_Read_Only” e “Concur_Updatable”. O primeiro traz um ResultSet somente para leitura, enquanto que o segundo pode ser atualizável.

Assim sendo o Statement deverá ser configurado desta forma:

   .......
   .......
   Statement meustate = minhaconexao.createStatement(ResutSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
   ......
   ......

Apenas apresentei esta dica, para em caso de voce quiser ler tabelas do seu banco e que seja navegável, o que não é recomendável neste caso na tabela de autenticação de usuário, visto que, jamais, veja bem, eu disse jamais traga toda a tabela de usuário para varrê-la na aplicação para depois autenticar o usuário, visto que voce só precisa trazer um único usuário, caso ele existe, e voce pode fazer isto com uma única instrução SQL com um critério estabelecido após a cláusula “WHERE”, é foi exatamente a dica da maioria dos membros que aqui postaram suas dicas, portanto, siga-as.

Um abraço.
Jorge da Silva Abreu