NullPointerException não sei o por que

Tenho uma função cadastrar que deveria inserir dados de um determinado usuario na tabela sql

  public void cadastrar(String apelido, char[] senha) {

            String sql = "INSERT INTO tbl_usuario (apelido,senha) VALUES('"+apelido+"','"+senha+"');";
            System.out.println(sql);
            try {
    //            PreparedStatement pst;
    //            pst = conn.prepareCall(sql);
    //
    //            pst.setString(1, apelido);
    //            pst.setString(2, String.valueOf(senha));

        Statement st = conn.createStatement();
       // st = conn.createStatement();
        st.executeUpdate(sql);
               // pst.execute();
                conn.close();

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

        }

Algum tempo atras essa função ja funcionou,conforme continuei o projeto fiz algum coisa que começou a dar erro,desde ent tentei inserir os dados de diversas formas (os coments ali)

O erro em especifico é este
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at cliente.controller.Conexao.cadastrar(Conexao.java:53)
at cliente.view.Cadastrar.jBcadastrarActionPerformed(Cadastrar.java:186)
at cliente.view.Cadastrar$1.actionPerformed(Cadastrar.java:84)

O erro aponta para a seguinte linha:
Statement st = conn.createStatement();

Tenho a funcao logar que funciona perfeitamente:
public void logar(String apelido, char[] senha) {
Statement stm;
cliente.model.UsuarioAutenticado usuarioautenticado = new cliente.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());
                } else {
                    System.out.println("[Conexao]Senha não confere");
                }

            } else {
                System.out.println("[Conexao]Usuario não encontrado");
            }
            conn.close();
            rs.close();
        } catch (SQLException ex) {
            System.out.println("Ocorreu um erro ao logar!\n" + ex);
        }
    }

vc inicializou a variavel conn?

1 curtida

NullPointerException (ou Exceção de Ponteiro Nulo) é jogada pelo Java quando você tenta usar um atributo que é, bem, nulo.

Logo, se você está dizendo:

É provavél que a variavel “conn” seja nula. Como o Java vai tentar pegar o valor de conn.createStatement(); para atribuir à st, a variável conn precisa existir e estar inicializada.

1 curtida

galera, vcs não vao acreditar,era uma coisa muito simples, eu tinha criado um metodo conexao(),porem eu nao estava usando(por isso o conn retornava null). Eu simplismente adicionei

conectar();

NPE geralmente é algo muito simples, mesmo.

1 curtida