Exception error in thread "AWT-Eventqueue-0" java.lang.Nullpointerexception

Asked

Viewed 1,169 times

2

I’m doing a college project where I can register, change, delete and consult a product. In the query part, I try to search for the ID. Only this error happens and I am not able to solve.

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)

The Product Code looks like this:

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;
}

The search button code looks like this:

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());
    }
}

In debug appears like this

Debug

The insert part is working properly, but I’m not able to consult.

2 answers

2


You stated resultados and resultSet as null in class ProdutoDAO and they are not being initialized.

List<Produtos> resultados = null;

ResultSet resultSet = null;

And besides, it is missing to execute your query:

ResultSet rs = stmt.executeQuery();

Follows edited code:

public List<Produtos> getID(String id) {
        //INSTÂNCIA
        List<Produtos> resultados = new ArrayList<>();

    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);

        //EXECUTANDO A QUERY
        resultSet = stmt.executeQuery();

        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;
}

0

Thanks, Gustavo. I managed to solve the problem. Really that was it... Only the part of executing the query you put in the edited code, which did not work. But I understood how it should be now.

You put it like that and you were wrong, according to the IDE:

 resultSet.executeQuery();

Then I put as you quoted in the first example:

resultSet = stmt.executeQuery();

Then it worked!

Gratitude indeed!

  • Oops, that’s right, I typed wrong. I’ll edit it. Vlw man

Browser other questions tagged

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