nullPointerException

Olá Pessoal!

Quando tento listar na pagina da web o Browser me mostra o seguinte erro:

java.lang.NullPointerException
br.com.jairo.dao.UsuarioDAO.totalRegistros(UsuarioDAO.java:235)
br.com.jairo.controle.UsuariosCRUD.processRequest(UsuariosCRUD.java:91)
br.com.jairo.controle.UsuariosCRUD.doGet(UsuariosCRUD.java:118)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

O metodo que aparece na 1ª linha acima, está descrito abaixo:

//metodo que retorna o total de registros
public String totalRegistros(String pesquisa, String campoapesquisar) throws SQLException{
    String sqlConta = "";
    PreparedStatement psConta = null;
    ResultSet rsConta = null;
    try{
        if(campoapesquisar.equals("nivel"))
            if(pesquisa.equals(""))
                sqlConta = "select count (*) as contaRegistros from usuarios where "+campoapesquisar+" > 0 ";
            else
                sqlConta = "select count (*) as contaRegistros from usuarios where "+campoapesquisar+" = "+pesquisa;
        else
            sqlConta = "select count (*) as contaRegistros from usuarios where "+campoapesquisar+" like '%"+pesquisa+"%'";
        psConta = conexao.prepareStatement(sqlConta);
        rsConta = psConta.executeQuery();
        rsConta.next();
        String qtdTotalRegistros = rsConta.getString("contaRegistros");
        return qtdTotalRegistros;
    } catch (SQLException ex) {
        Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        conexao.close();
        psConta.close();
        rsConta.close();//O ERRO OCORRE AQUI
    }
    return null;
}

O metodo que aparece na 2ª linha acima, está descrito abaixo:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException, SQLException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    RequestDispatcher rd = null;

    String usuario = request.getParameter("usuario");
    String senha = request.getParameter("senha");
    String nomeCompleto = request.getParameter("nomecompleto");
    String endereco = request.getParameter("endereco");
    String fone = request.getParameter("fone");
    String nivel = request.getParameter("nivel");

    Usuarios usuarios = new Usuarios();
    usuarios.setUsuario(usuario);
    usuarios.setSenha(senha);
    usuarios.setNomeCompleto(nomeCompleto);
    usuarios.setEndereco(endereco);
    usuarios.setFone(fone);
    if(nivel != null)
        usuarios.setNivel(Integer.parseInt(nivel));

    UsuarioDAO usuarioDAO = new UsuarioDAO();

    String acao = request.getParameter("acao");

    if (acao == null) {
        acao = "listarUsuario";
    }

    if (acao.equals("Alterar")) {
        usuarioDAO.alteraUsuario(usuarios);
        rd = request.getRequestDispatcher("/UsuariosCRUD?acao=listarUsuario");
    } else if (acao.equals("excluir")) {
        usuarioDAO.excluiUsuario(usuarios);
        rd = request.getRequestDispatcher("/UsuariosCRUD?acao=listarUsuario");
    } else if (acao.equals("listarUsuario")) {
        int numPagina = 1;

        if (request.getParameter("numpagina") != null) {
            numPagina = Integer.parseInt(request.getParameter("numpagina"));
        }
        try {
            String ordenacao = request.getParameter("ordenacao");
            if(ordenacao == null)
                ordenacao = "usuario";

            String pesquisa = request.getParameter("pesquisa");
            if(pesquisa == null)
                pesquisa = "";

            String campoapesquisar = request.getParameter("campoapesquisar");
            if(campoapesquisar == null)
                campoapesquisar = "usuario";

            List listaUsuarios = usuarioDAO.getListaUsuarioPaginado(numPagina,ordenacao, pesquisa,campoapesquisar);
            String totalRegistros = usuarioDAO.totalRegistros(pesquisa,campoapesquisar);//O ERRO OCORRE AQUI
            request.setAttribute("sessaoListaUsuario", listaUsuarios);
            request.setAttribute("sessaoQtdTotalRegistros", totalRegistros);
            rd = request.getRequestDispatcher("/usuarios.jsp");
        } catch (SQLException e) {
            Logger.getLogger(UsuariosCRUD.class.getName()).log(Level.SEVERE, null, e);
        }
    }else if (acao.equals("Gravar")) {
        usuarioDAO.novoUsuario(usuarios);
        rd = request.getRequestDispatcher("/UsuariosCRUD?acao=listarUsuario");
    }
    rd.forward(request, response);

}

Alguém pode me ajudar a corrigir isto?

Feche o “rsConta.close();” primeiro, em segundo o “psConta.close();” e finalmente o “conexao.close();”. Eles devem ser fechados na ordem inversa de criação.

Ola 4mega!

Não deu certo, exibiu o mesmo erro!

rs já é ps . Fecha só um e verifica no seu mysql. A conexão fechou com certeza.

Olá FabioDaros!

O problema foi resolvido da seguinte forma:

  • na sintaxe utilizada para fazer o count no sql estava da seguinte forma:
    sqlConta = "select count (*) as contaRegistrosUsuarios from usuarios where “+campoapesquisar+” > 0 ";
  • fiz uma alteração na sintaxe, apos o count existia um espaço antes do parentese, tirei este espaço e funcionou perfeitamente. Esta descrito abaixo como ficou:
    sqlConta = "select count(*) as contaRegistrosUsuarios from usuarios where “+campoapesquisar+” > 0 ";