Java - Class does not display requested information

Asked

Viewed 50 times

1

Good morning,

I need to fix a problem when I ask in "dao. Access" the get of the model class.User returns vázio = null.

When it is called: doLogin(model.Access access) you see the information by Joptionpane now when I do the same on: updateUsuario(model.Access access) nothing is displayed!

Class: model. Access

public class Acessar {

// Variables private string name; private string password; private string group; private date access;

// Getters & Setters
public String getNome() {
    return nome;
}
public void setNome(String nome) {
    this.nome = nome;
}
public String getSenha() {
    return senha;
}
public void setSenha(String senha) {
    this.senha = senha;
}   
public String getGrupo() {
    return grupo;       
}
public void setGrupo(String grupo) {
    this.grupo = grupo;
}
public Date getAcesso() {
    return acesso;
}

public void setAcesso(Date date) {
    this.acesso = date;
}

// Builders

// Usuário e Senha
public Acessar(String nome, String senha) {
    this.nome = nome;
    this.senha = senha;
}

// Acesso
public Acessar(Date acesso) {
    this.acesso = acesso;
}

}

Class: dao. Access

public class Acessar {

public static Connection con = dao.ConectarDB.getConexao();

public static String doLogin(model.Acessar acessar) {

    // Variáveis
    PreparedStatement ps = null;
    String sql = null; 
    ResultSet rs = null;
    ResultSet autenticacao = null;
    ResultSet grupo = null;
    sql = "select * from usuario where nome=? and senha=?";

    // Validar Usuário
    try {

        ps = ConectarDB.getConexao().prepareStatement(sql);
        ps.setString(1, acessar.getNome());
        ps.setString(2, acessar.getSenha());
        rs = ps.executeQuery();
        autenticacao = rs; 

        // Validar Grupo
        try {

            ps = null;
            sql = null;
            rs = null;
            sql = "select * from usuario where grupo=?";

            ps = con.prepareStatement(sql); 
            ps.setString(1, "Suporte");
            rs = ps.executeQuery();
            grupo = rs;

        } catch (SQLException ex) {
           ex.printStackTrace();
           return null;
        }

        // Autenticação do Usuário
        if(autenticacao.next()) {

            // Grupo do Usuário
            if(grupo.next()) {

            } else {
                return null;
            }

            return "Suporte";

        } else {
            return "erro";
        }            

    } catch (SQLException ex) {
        ex.printStackTrace();
        return "erro";
    }

}

// Atualizar Acesso do Usuário
public void atualizarUsuario(model.Acessar acessar) {

    // Variáveis
    PreparedStatement ps = null;
    String sql = "update usuario set acesso=? where nome=?";

    // Inserção
    try {
        ps = con.prepareStatement(sql);
        ps.setDate(1, new Date(acessar.getAcesso().getTime()));
        ps.setString(2, acessar.getNome());
        JOptionPane.showMessageDialog(null, "Nome: " + acessar.getNome()); // Mostra = null, por que?
        ps.executeUpdate();

    } catch (SQLException ex) {
       ex.printStackTrace();
    }
}

}

view. Access (jFrame)

// Botão Ok
    btnOk = new JButton("Ok");
    btnOk.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {                

        // Capturar Campos
            String nome = tfNome.getText();
            String senha = new String (pfSenha.getPassword());

        // Validar Usuário
            model.Acessar acessar = new model.Acessar(nome, senha);
            String autenticar = dao.Acessar.doLogin(acessar);

        // Validar Conexão com a Internet
            try {
                Socket socket = null;
                socket = new Socket("www.google.com", 80);
                socket.close();

            } catch (Exception e1) {
                JOptionPane.showMessageDialog(null, "Computador sem acesso a Internet!", "Informação", JOptionPane.WARNING_MESSAGE);
            }

        // Validar Conexão com Banco de Dados PostGreSQL
            try {
                ConectarDB db = new ConectarDB();
                db.main(null);
            } catch (Exception e1) {
                e1.printStackTrace();
            }


        // Autenticar Usuário
            if(autenticar != "erro") {

                // Capturar Data e Hora e Atualizar
                java.util.Date date = new java.util.Date();
                model.Acessar acessarM = new model.Acessar(date);

                // Atualizar Tabela do Usuário com Ultimo Acesso
                dao.Acessar uAtualizar = new dao.Acessar();
                uAtualizar.atualizarUsuario(acessarM);                  
                JOptionPane.showMessageDialog(null, acessarM.getAcesso(), "Informação", JOptionPane.INFORMATION_MESSAGE);               

                // Abrir a Janela do Sistema
                if(autenticar == "Suporte") {
                    JOptionPane.showMessageDialog(null, "Você pertence ao Grupo de (Suporte)", "Informação", JOptionPane.INFORMATION_MESSAGE);
                    new Sistema().main(null);
                    dispose();
                }                   

            } else if (autenticar == "erro"){
                JOptionPane.showMessageDialog(null, "Nome ou senha inválidos, favor verificar.", "Informação", JOptionPane.ERROR_MESSAGE);
            }

        }
    });
  • I don’t understand your question. Where in the DAO Login has a get for the user class? Can’t find.

1 answer

2


model.Acessar acessarM = new model.Acessar(date);

You are instilling the object again before updating, without passing the name and password, other than the first call.

model.Acessar acessar = new model.Acessar(nome, senha);

Do the following:

Create the public constructor Access(){} empty in the Access class.

Instead of you doing:

model.Acessar acessar = new model.Acessar(nome, senha);

Do:

 model.Acessar acessar = new model.Acessar();

 acessar.setNome(nome);

 acessar.setSenha(senha);

Remove the chunk:

model.Acessar acessarM = new model.Acessar(date);

And replace it with:

acessar.setAcesso(date);
  • I’m sorry. I still don’t understand kkkkk I’m a bit layy... yet

  • I supplemented the explanation.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.