[RESOLVIDO] Definir variavel

Bom dia, estou tentando criar um sistema de login simples com java e sql.

Ação do botão em um JView
model.UsuarioAutenticado usuarioautenticado = new model.UsuarioAutenticado();
view.Mensagem mensagem = new view.Mensagem();

        String apelido = jTlogar_apelido.getText(); //cria a variavel apelido com o valor de jTlogar_apelido
        char[] senha = jPlogar_senha.getPassword(); //cria a variavel senha com o valor de jPlogar_senha
        
        controller.Conexao conexao = new controller.Conexao();
        conexao.conectar(); //abre uma conexao com o banco
        
        conexao.logar(apelido, senha); //loga utilizando apelido e senha
        System.out.println("[Login]O id do login é: "+usuarioautenticado.getId());
        System.out.println("[Login]Esta autenticado? "+usuarioautenticado.isAutenticado());

`** Metodo da classe conexão**

public void logar(String apelido, char[] senha) {
        Statement stm;
        model.UsuarioAutenticado usuarioautenticado = new model.UsuarioAutenticado();
        String sql = "select * from tbl_usuario where apelido like '" + apelido + "'";

        try {

            stm = conn.createStatement();
            ResultSet rs = stm.executeQuery(sql);

            if (rs.next()) {
                System.out.println("[Conexao]Usuario encontrado");
                if (rs.getString("senha").matches(String.valueOf(senha))) {
                    System.out.println("[Conexao]Senha confere");

                    usuarioautenticado.setAutenticado(true);
                    usuarioautenticado.setApelido(rs.getString("apelido"));
                    usuarioautenticado.setId(rs.getInt("id"));

                    System.out.println("[Conexao]O id do usuario é: " + usuarioautenticado.getId());
                    System.out.println("[Conexao]O apelido do usuario é: " + usuarioautenticado.getApelido());
                    System.out.println("[Conexao]Esta autenticado? " + usuarioautenticado.isAutenticado());
                }

            }
        } catch (SQLException ex) {
            System.out.println("Ocorreu um erro ao conectar!\n" + ex);
        }
    }`

Output terminal
Conectado com sucesso!
[Conexao]Usuario encontrado
[Conexao]Senha confere
[Conexao]O id do usuario é: 17
[Conexao]O apelido do usuario é: jose
[Conexao]Esta autenticado? true
[Login]O id do login é: 0
[Login]Esta autenticado? false

Minha duvida é que quando eu defino as variaveis id,apelido e boolean autenticado atraves do metodo logar(apelido, senha) e vou pegar a informacao das variveis elas estao la,mas no JView tento pegar esses valores e retorna null.

@DarkSoldier Você criou gets e sets para a classe UsuarioAutenticado.

Pois lá em cima voce só definiu um objeto vazio

sem nenhum parâmetro e quando você tenta resgastar os valores ele retorna os valores que estão no objeto .

os objetos estão sem parametros o que faz ter essa saída

Opa, esqueci de colocar a classe UsuarioAutenticado, criei os gets e sets sim.

public class UsuarioAutenticado {
    private int id;
    private String apelido;
    private boolean autenticado;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getApelido() {
        return apelido;
    }

    public void setApelido(String apelido) {
        this.apelido = apelido;
    }

    public boolean isAutenticado() {
        return autenticado;
    }

    public void setAutenticado(boolean autenticado) {
        this.autenticado = autenticado;
    }

    
}

Então sei que não é muito recomendado mas coloca o método isAutenticado e getId como static

1 curtida

Muito obrigado,coloquei static na variavel id e na boolean autenticado e funcionou certinho, mas por que não é muito recomendado?

Porque por exemplo pensa o seguinte:
é mais fácil "capturar " o valor da variável e usá-lo.Mas como essa aplicação não é para empresa não tem problema

1 curtida

Entendi, muito obrigado :grinning: