Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

2 respostas
java
Murilo_Cunha

Estou fazendo um projeto da faculdade, em que dê para cadastrar, alterar, excluir e consultar um produto. Na parte de consultar, eu tento buscar pelo ID. Só que acontece este erro e eu não estou conseguindo resolver.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Modelo.Dao.ProdutoDAO.getID(ProdutoDAO.java:75)
	at org.me.projetopoo.AlterarProduto.btnPesquisarActionPerformed(AlterarProduto.java:349)
	at org.me.projetopoo.AlterarProduto.access$400(AlterarProduto.java:16)
	at org.me.projetopoo.AlterarProduto$5.actionPerformed(AlterarProduto.java:195)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6539)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6304)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

O código de ProdutoDAO está assim:

public List<Produtos> getID(String id) {
        List<Produtos> resultados = null;

    Connection con = null;
    try {
        con = ConexaoBD.getConnection();
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
    }

    ResultSet resultSet = null;
    PreparedStatement stmt = null;

    try {

        stmt = con.prepareStatement("select * from tabproduto where id_produto = ?");
        stmt.setString(1, id);

        while (resultSet.next()) {
            resultados.add(new Produtos(
                    resultSet.getInt("ID_PRODUTO"),
                    resultSet.getString("NOME"),
                    resultSet.getString("QUANTIDADE"),
                    resultSet.getString("DATA_FAB"),
                    resultSet.getString("LOTE"),
                    resultSet.getString("OBS")));
        }

    } catch (SQLException ex) {
        ex.printStackTrace();
    } finally {
        ConexaoBD.closeConnection(con, stmt, resultSet);
    }

    return resultados;
}

O código do botão pesquisar está assim:

private void btnPesquisarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        resultado = dao.getID(txtID.getText());

    numero = resultado.size();

    if (numero != 0) {
        indice = 0;
        indiceEntrada = resultado.get(indice);

        txtID.setText(String.valueOf(indiceEntrada.getId()));
        txtNome.setText(indiceEntrada.getNome());
        txtQtd.setText(indiceEntrada.getQtd());
        txtFab.setText(indiceEntrada.getFab());
        txtLote.setText(indiceEntrada.getLote());
        txtObs.setText(indiceEntrada.getObs());
    }
}

No debug aparece assim

A parte de inserir está funcionando corretamente. Não estou conseguindo consultar. :frowning:

2 Respostas

staroski

No seu método getID você inicializou resultados com null e aí está tentando adicionar itens nessa lista null.

Dicas:
Se o seu método retorna uma lista de produtos, ele deveria se chamar getProdutos e não getID.

Se cada instância da classe Produtos representanta um produto, ela deveria se chamar Produto, no singular.

Murilo_Cunha

Muito obrigado! Deu certo! e a parte de resultSet tbm eu estava faltando executar a query…

Grato também pelas dicas! Como eu sou um iniciante, ainda não tenho experiências com códigos e estas dicas são fundamentais para que possa escrever um código mais claro. :slight_smile:

Criado 14 de junho de 2019
Ultima resposta 14 de jun. de 2019
Respostas 2
Participantes 2