Ajuda validar login como administrador ou funcionario [Resolvido]

Ae pessoal, ajuda com o login do meu projeto:
Estou fazendo o projeto de uma livraria e se o usuário se logar como administrador abre uma tela e se ele se logar como funcionario abre outra tela.
Eu consegui fazer o método para se logar, mas não consigo fazer a diferenciação administrador/funcionario. Vale a pena dizer que o método de login funciona, eu só preciso fazer um if para o programa buscar no meu bd, na tabela funcionarios a coluna “nivel” que pode ser ‘FUNC’ ou ‘ADM’ e dependendo de qual resultado achar, abrir uma tela para funcionario ou para o administrador.
Eis meu código:
[color=red]Se alguém puder me dar uma ajuda rápida eu agradeceria, afinal tenho só duas semanas para entregar este projeto que vai ser o meu trabalho de conclusão do técnico em informática [/color]:cry:

[code] //BOTÃO ENTRAR DA CLASSE JT_LOGIN
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

      String y = jPFsenha.getText();
      String x = jTF_usuario.getText();
    try {

        AutenticacaoDao dao = new AutenticacaoDao();
        dao.getLista(x, y);
        

    } catch (SQLException ex) {
        Logger.getLogger(jT_Login.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(jT_Login.class.getName()).log(Level.SEVERE, null, ex);
    }


}              [/code]

[code]
//CLASSE AUTENTICACAODAO
public class AutenticacaoDao {

  private Connection conexao;
  // Senha para encriptar o código
  private String cript = "rachacuca";

    public AutenticacaoDao() throws SQLException, ClassNotFoundException {
    this.conexao = CriaConexao.getConexao();
}


    // MÉTODO DE LOGIN
    public void getLista (String usuario, String senha) throws SQLException {
       // JFautenticacao aut = new JFautenticacao();
    String sql = "select usuario, senha from funcionarios where usuario = ? AND senha = AES_ENCRYPT( ?, ?)";
    PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql);

       stmt.setString(1, usuario);
       stmt.setString(2, cript);
       stmt.setString(3, senha);
 
       ResultSet rs = stmt.executeQuery();

       if (rs.next()){

            // Captura o nível do usuário que pode ser:
           //ADIMINISTRADOR=ADM ou FUNCIONARIO=FUNC
           
           //A classe autenticacaoBean contém os gets e sets
            AutenticacaoBean bean = new AutenticacaoBean();
            bean.setUsuario(rs.getString("nivel"));

            // Se o nivel do usuario for 'ADM' abre a janela abaixo do administrador
            // E aqui está o meu if, no qual eu não sei o que botar para
            //diferenciar administrador de funcionario
            if()
            {   System.out.println("Bem-vindo administrador");
                new jT_Administrador().setVisible(true);}

            // Senão abre a tela do funcionario
            else{
                System.out.println("Bem-vindo funcionario");
                new jT_LivrosFunc().setVisible(true); }
           
           
            

       }
       else{
           JOptionPane.showMessageDialog(null, "Login Incorreto.\n" +
                   "Tente novamente.\n","Mensagem do Programa", JOptionPane.ERROR_MESSAGE);}



    rs.close();
    stmt.close();

}

}[/code]

EDIT nao tinha lido direito…

cara não seria mais fácil trazer uma lista de usuario?
e depois fazer a condição fora do next?

[quote=Tadeu-Costa]Ae pessoal, ajuda com o login do meu projeto:
Estou fazendo o projeto de uma livraria e se o usuário se logar como administrador abre uma tela e se ele se logar como funcionario abre outra tela.
Eu consegui fazer o método para se logar, mas não consigo fazer a diferenciação administrador/funcionario. Vale a pena dizer que o método de login funciona, eu só preciso fazer um if para o programa buscar no meu bd, na tabela funcionarios a coluna “nivel” que pode ser ‘FUNC’ ou ‘ADM’ e dependendo de qual resultado achar, abrir uma tela para funcionario ou para o administrador.
Eis meu código:
[color=red]Se alguém puder me dar uma ajuda rápida eu agradeceria, afinal tenho só duas semanas para entregar este projeto que vai ser o meu trabalho de conclusão do técnico em informática [/color]:cry:

[code] //BOTÃO ENTRAR DA CLASSE JT_LOGIN
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

      String y = jPFsenha.getText();
      String x = jTF_usuario.getText();
    try {

        AutenticacaoDao dao = new AutenticacaoDao();
        dao.getLista(x, y);
        

    } catch (SQLException ex) {
        Logger.getLogger(jT_Login.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(jT_Login.class.getName()).log(Level.SEVERE, null, ex);
    }


}              [/code]

[code]
//CLASSE AUTENTICACAODAO
public class AutenticacaoDao {

  private Connection conexao;
  // Senha para encriptar o código
  private String cript = "rachacuca";

    public AutenticacaoDao() throws SQLException, ClassNotFoundException {
    this.conexao = CriaConexao.getConexao();
}


    // MÉTODO DE LOGIN
    // Este método não retorna uma lista, acho que o nome não esta adequado, fora de padrão
    public void getLista (String usuario, String senha) throws SQLException {
       // JFautenticacao aut = new JFautenticacao();
    String sql = "select usuario, senha from funcionarios where usuario = ? AND senha = AES_ENCRYPT( ?, ?)";
    PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql);

       stmt.setString(1, usuario);
       stmt.setString(2, cript);
       stmt.setString(3, senha);
 
       ResultSet rs = stmt.executeQuery();

       if (rs.next()){

            // Captura o nível do usuário que pode ser:
           //ADIMINISTRADOR=ADM ou FUNCIONARIO=FUNC
           
           //A classe autenticacaoBean contém os gets e sets
            AutenticacaoBean bean = new AutenticacaoBean();
            bean.setUsuario(rs.getString("nivel"));

            // Se o nivel do usuario for 'ADM' abre a janela abaixo do administrador
            // E aqui está o meu if, no qual eu não sei o que botar para
            //diferenciar administrador de funcionario
            if()
            {   System.out.println("Bem-vindo administrador");
                new jT_Administrador().setVisible(true);}

            // Senão abre a tela do funcionario
            else{
                System.out.println("Bem-vindo funcionario");
                new jT_LivrosFunc().setVisible(true); }
           
           
            

       }
       else{
           JOptionPane.showMessageDialog(null, "Login Incorreto.\n" +
                   "Tente novamente.\n","Mensagem do Programa", JOptionPane.ERROR_MESSAGE);}



    rs.close();
    stmt.close();

}

}[/code]

[/quote]

Mas poderia resolver este caso, adicionando na tabela de funcionarios uma coluna perfil, onde ao cadastrar um usuário vc informa seu status,(“adimin”, entre outros…).
Assim no resultado do seu select fica fácil de saber o nível do usuario…

Para organizar seu projeto:

1º altere o nome do método, getLista… Não retorna nenhuma lista…
2º Poderia ser exemplo:

public Usuario logar(Usuario usuario) throws SQLException {
           // JFautenticacao aut = new JFautenticacao();
        String sql = "select usuario, senha from funcionarios where usuario = ? AND senha = AES_ENCRYPT( ?, ?)";
        PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql);

           stmt.setString(1, usuario.getNome());
           stmt.setString(2, cript);
           stmt.setString(3, usuario.getSenha());
     
           ResultSet rs = stmt.executeQuery();

           if (rs.next()){
            // popula um novo Usuario com o retorno do resulSet e o mesmo será o retorno do método

3º Cria uma Camada de servico que faz a chamada ao seu dao e trata o retono… chamando as devidas telas

Espero ter ajudado,
Abçs

Falae diego.sas. Realmente eu tinha um campo no mo meu BD que se chamava nível e consegui fazer o login. E através dele eu consegui fazer o login finalmente! Só fiquei com uma dúvida: [color=red]como é que eu faço pra fechar a janela de login depois de o usuário logar-se?[/color]
Ai vai o método que eu fiz pra me logar:

[code]
//FORM JT_LOGIN
//Botão logar
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

      String senha = jPFsenha.getText();
      String usuario = jTF_usuario.getText();
      String nivel = jCB_nivel.getSelectedItem().toString();
    try {

        AutenticacaoDao dao = new AutenticacaoDao();
        dao.logar(usuario, senha, nivel);
        

    } catch (SQLException ex) {
        Logger.getLogger(jT_Login.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(jT_Login.class.getName()).log(Level.SEVERE, null, ex);
    }


}             [/code]

[code]
// CLASSE AUTENTICACAODAO
//Método de login
public void logar (String usuario, String senha, String nivel) throws SQLException {

    String sql = "select usuario, senha, nivel from funcionarios where usuario = ? and senha = AES_ENCRYPT( ?, ?) and nivel = ?";
    PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql);

       stmt.setString(1, usuario);
       stmt.setString(2, cript);
       stmt.setString(3, senha);
       stmt.setString(4, nivel);
 
       ResultSet rs = stmt.executeQuery();

       if (rs.next()){



          // Abre a tela do administrador
            if(nivel.equals("ADMINISTRADOR"))
            {   System.out.println("Bem-vindo administrador");
                new jT_Administrador().setVisible(true);
           //Era por aqui que eu queria fechar a janela de login ou....

            }


            // Senão abre a tela do usuario
            else if (nivel.equals("FUNCIONARIO")){
                System.out.println("Bem-vindo funcionario");
                new jT_LivrosAdm().setVisible(true); }
           //....ou então fechar por aqui.
           
                       }

              // Caso login esteja incorreto, mostra essa frase
       else{
           JOptionPane.showMessageDialog(null, "Login Incorreto.\n" +
                   "Tente novamente.\n","Mensagem do Programa", JOptionPane.ERROR_MESSAGE);}



    rs.close();
    stmt.close();

}[/code]

[quote=Tadeu-Costa]Falae diego.sas. Realmente eu tinha um campo no mo meu BD que se chamava nível e consegui fazer o login. E através dele eu consegui fazer o login finalmente! Só fiquei com uma dúvida: [color=red]como é que eu faço pra fechar a janela de login depois de o usuário logar-se?[/color]
Ai vai o método que eu fiz pra me logar:

[code]
//FORM JT_LOGIN
//Botão logar
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

      String senha = jPFsenha.getText();
      String usuario = jTF_usuario.getText();
      String nivel = jCB_nivel.getSelectedItem().toString();
    try {
        // Fala ae Tadeu-Costa, cara procura manipular objetos,
        // Poderia passar um único objeto Usuario ao invés de 3 Strings....
        AutenticacaoDao dao = new AutenticacaoDao();
        dao.logar(usuario, senha, nivel);
        

        //Mas ficaria assim.....
      //    dao.logar(this, usuario, senha, nivel);


    } catch (SQLException ex) {
        Logger.getLogger(jT_Login.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(jT_Login.class.getName()).log(Level.SEVERE, null, ex);
    }


}             [/code]

[code]
// CLASSE AUTENTICACAODAO
//Método de login

    // Aletera este método assim....  
    public void logar (Jframe frame, String usuario, String senha, String nivel) throws SQLException {
      
    String sql = "select usuario, senha, nivel from funcionarios where usuario = ? and senha = AES_ENCRYPT( ?, ?) and nivel = ?";
    PreparedStatement stmt = (PreparedStatement) this.conexao.prepareStatement(sql);

       stmt.setString(1, usuario);
       stmt.setString(2, cript);
       stmt.setString(3, senha);
       stmt.setString(4, nivel);
 
       ResultSet rs = stmt.executeQuery();

       if (rs.next()){



          // Abre a tela do administrador
            if(nivel.equals("ADMINISTRADOR"))
            {   System.out.println("Bem-vindo administrador");

            // Neste ponto vc faz....
             frame.setVisible(false);
                new jT_Administrador().setVisible(true);
           //Era por aqui que eu queria fechar a janela de login ou....


            }


            // Senão abre a tela do usuario
            else if (nivel.equals("FUNCIONARIO")){
                System.out.println("Bem-vindo funcionario");
                new jT_LivrosAdm().setVisible(true); }
           //....ou então fechar por aqui.
           
                       }

              // Caso login esteja incorreto, mostra essa frase
       else{
           JOptionPane.showMessageDialog(null, "Login Incorreto.\n" +
                   "Tente novamente.\n","Mensagem do Programa", JOptionPane.ERROR_MESSAGE);}



    rs.close();
    stmt.close();

}[/code]

[/quote]

Verifica os comentários no seu código…
abraços.

Ae diego.sas funcionou! Valeu cara, salvou a minha vida kkkk.

Opa blz…
So edita seu 1º post, altera o título para [Resolvido]
abraços, boa sorte.