Java NullPointerException,我没有理由

时间:2018-08-24 16:42:00

标签: java mysql nullpointerexception desktop-application

我是购物台式机应用程序上的新手程序员,但是每当我尝试添加新产品时,我都会不断得到这个信息:

  

线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException     在shop_online.dao.mysql.ArticoloDAO.add(ArticoloDAO.java:46)     在shop_online.business.GestoreBSN.createArticolo(GestoreBSN.java:46)     在> shop_online.listeners.AggiungiProdottoListener.actionPerformed(AggiungiProdotto> Listener.java:63)     在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)     在> javax.swing.AbstractButton $ Handler.actionPerformed(AbstractButton.java:2348)     在> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)     在javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)     在> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.ja> va:252)     在java.awt.Component.processMouseEvent(Component.java:6539)     在javax.swing.JComponent.processMouseEvent(JComponent.java:3324)     在java.awt.Component.processEvent(Component.java:6304)     在java.awt.Container.processEvent(Container.java:2239)     在java.awt.Component.dispatchEventImpl(Component.java:4889)     在java.awt.Container.dispatchEventImpl(Container.java:2297)     在java.awt.Component.dispatchEvent(Component.java:4711)     在java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)     在java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)     在java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)     在java.awt.Container.dispatchEventImpl(Container.java:2283)     在java.awt.Window.dispatchEventImpl(Window.java:2746)     在java.awt.Component.dispatchEvent(Component.java:4711)     在java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)     在java.awt.EventQueue.access $ 500(EventQueue.java:97)     在java.awt.EventQueue $ 3.run(EventQueue.java:709)     在java.awt.EventQueue $ 3.run(EventQueue.java:703)     在java.security.AccessController.doPrivileged(本机方法)     在> java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(P> rotectionDomain.java:74)     在> java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(P> rotectionDomain.java:84)     在java.awt.EventQueue $ 4.run(EventQueue.java:733)     在java.awt.EventQueue $ 4.run(EventQueue.java:731)     在java.security.AccessController.doPrivileged(本机方法)     在> java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(P> rotectionDomain.java:74)     在java.awt.EventQueue.dispatchEvent(EventQueue.java:730)     在> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:20> 5)     在> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)     在> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:10> 5)     在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)     在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)     在java.awt.EventDispatchThread.run(EventDispatchThread.java:82)   建立成功(总时间:8分16秒)

这是ArticoloDAO GestoreBSN和AggiungiProdottoListener的代码:

public class AggiungiProdottoListener implements ActionListener, ItemListener,MouseListener,ChangeListener 
{
    public ArrayList<String> listaPercorsi;
    AggiungiProdotto aggiungiProdotto;

    public AggiungiProdottoListener(AggiungiProdotto aggiungiProdotto) 
    {
        this.aggiungiProdotto = aggiungiProdotto;
    }

    @Override
    public void actionPerformed(ActionEvent e) 
    {
        if(e.getSource()==aggiungiProdotto.getBtnAggiungi())
        {
            String nome = aggiungiProdotto.getTxtNome().getText();
            float prezzo = Float.valueOf(aggiungiProdotto.getTxtPrezzo().getText());
            int disponibilita = Integer.valueOf(aggiungiProdotto.getTxtDisponibilita().getText());
            int sconto = Integer.parseInt(aggiungiProdotto.getTxtSconto().getText());
            String descrizione = aggiungiProdotto.getTxtDescrizione().getText();
            String nomeReparto = String.valueOf(aggiungiProdotto.getCmbReparto().getSelectedItem());
            String nomeCategoria = String.valueOf(aggiungiProdotto.getCmbCategoria().getSelectedItem());
            String nomeProduttore = String.valueOf(aggiungiProdotto.getCmbProduttore().getSelectedItem());
            String nomeDistributore = String.valueOf(aggiungiProdotto.getCmbDistributore().getSelectedItem());

            Reparto reparto = ArticoloBSN.getInstance().getRepartobyNome(nomeReparto);
            Categoria categoria = ArticoloBSN.getInstance().getCategoriabyNome(nomeCategoria);
            Produttore produttore = ArticoloBSN.getInstance().getProduttorebyNome(nomeProduttore);
            Distributore distributore = ArticoloBSN.getInstance().getDistributorebyNome(nomeDistributore);


            GestoreBSN.getInstance().createArticolo(nome,prezzo,disponibilita,sconto,descrizione,reparto,categoria,produttore,distributore);

            int idArticolo = ArticoloBSN.getInstance().getArticolobyNome(nome).getIdArticolo(); //TODO : Improve this
            /*for(int i=0 ; i < listaPercorsi.size() ; i++)
            {
                String path = listaPercorsi.get(i);
                ImmagineBSN.getInstance().addImage(path, idArticolo);
            }*/
            listaPercorsi.forEach(s->
            {
                ImmagineBSN.getInstance().addImage(s,idArticolo);
            });
            aggiungiProdotto.setVisible(false);
            AggiungiProdotto apFrame = new AggiungiProdotto();
            apFrame.setVisible(true);

        }
        if(e.getSource()==aggiungiProdotto.getBtnImmagini())
        {
            String path = aggiungiProdotto.getTxtPercorso().getText();
            listaPercorsi.add(path);
            aggiungiProdotto.getTxtPercorso().setText("");
            aggiungiProdotto.getTxtPercorso().repaint();


        }
        if(e.getSource()==aggiungiProdotto.getBtnIndietro())
        {
            aggiungiProdotto.setVisible(false);
            GestoreCatalogoFrame gestoreCatalogoFrame = new GestoreCatalogoFrame();
            gestoreCatalogoFrame.setVisible(true);

        }
    }

public class ArticoloDAO extends ABSArticoloDAO implements IBaseDao<Articolo> {

    private static ArticoloDAO instance;

    private ArticoloDAO() {
    }

    public static ArticoloDAO getInstance() {

        if (instance == null) {
            instance = new ArticoloDAO();
        }

        return instance;

    }

    @Override
    public boolean add(Articolo articolo) 
    {
         String query = "INSERT INTO articolo VALUE ( NULL,"
                +"'"+articolo.getNome()+"',"
                +articolo.getPrezzo()+","
                +articolo.getSconto()+","
                +articolo.getDisponibilita()+","
                +"'"+articolo.getDescrizione()+"',"
                +articolo.getReparto().getIdReparto()+","
                +articolo.getCategoria().getIdCategoria()+","
                +articolo.getProduttore().getIdProduttore()+","
                +articolo.getDistributore().getIdDistributore()+" )";

        return DbConnection.getInstance().eseguiAggiornamento(query);
    }


    @Override
    public boolean remove(Articolo articolo) {
        String query = "REMOVE FROM articolo "
                + "WHERE id_articolo = '" + articolo.getIdArticolo() + "' ";
        return DbConnection.getInstance().eseguiAggiornamento(query);

    }

    @Override
    public boolean update(Articolo articolo) {
     String query = "UPDATE articolo SET "
                + "nome = '" + articolo.getNome() + "', "
                + "prezzo = " + articolo.getPrezzo()  + ", "
                + "sconto = " +articolo.getSconto() + ", "
                + "disponibilita = " + articolo.getDisponibilita()  + ", "
                + "descrizione = '" +articolo.getDescrizione()  + "', "
                + "id_reparto = '" + articolo.getReparto().getIdReparto() + "', "
                + "id_categoria = " + articolo.getCategoria().getIdCategoria() + ", "
                + "id_produttore = " + articolo.getProduttore().getIdProduttore() + ", "
                + "id_distributore = " + articolo.getDistributore().getIdDistributore()
                + "WHERE id_articolo = " + articolo.getIdArticolo() ;

        return DbConnection.getInstance().eseguiAggiornamento(query); 
    }

    @Override
    public ArrayList<Articolo> findAll() {
       String query = "SELECT * FROM articolo";

        ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);

        ArrayList<Articolo> articoli = new ArrayList<>();

        risultato.forEach(riga ->{

            Articolo articolo = getFromArray(riga);

            articoli.add(articolo);

        });

        return articoli; 
    }

    @Override
    public Articolo findById(int id) {

        String query = "SELECT * FROM articolo WHERE id_articolo = '" + id + "'";
        ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);
        if (risultato.isEmpty()) {
            return null;
        }

        String[] riga = risultato.get(0);

        Articolo articolo = getFromArray(riga);

        return articolo;

    }

    @Override
    public Articolo getFromArray(String[] array) {
        Articolo articolo = new Articolo();

        int idArticolo = Integer.parseInt(array[0]);
        String nome = array[1];
        float prezzo = Float.parseFloat(array[2]);
        int disponibilita =Integer.parseInt(array[3]);
        int sconto = Integer.parseInt(array[4]);
        String descrizione=array[5];
        int idReparto = Integer.parseInt(array[6]);
        int idCategoria = Integer.parseInt(array[7]);
        int idProduttore = Integer.parseInt(array[8]);
        int idDistributore = Integer.parseInt(array[9]);

        Reparto reparto = RepartoDAO.getInstance().findById(idReparto);
        Categoria categoria = CategoriaDAO.getInstance().findById(idCategoria);
        Produttore produttore = ProduttoreDAO.getInstance().findById(idProduttore);
        Distributore distributore = DistributoreDAO.getInstance().findById(idDistributore);

        articolo.setIdArticolo(idArticolo);
        articolo.setNome(nome);
        articolo.setPrezzo(prezzo);
        articolo.setDisponibilita(disponibilita);
        articolo.setSconto(sconto);
        articolo.setDescrizione(descrizione);
        articolo.setReparto(reparto);
        articolo.setCategoria(categoria);
        articolo.setProduttore(produttore);
        articolo.setDistributore(distributore);

        return articolo;
    }

public ArrayList<Articolo> findByCategoria(Categoria categoria) {
       String query = "SELECT * FROM articolo WHERE id_categoria = '"+categoria.getIdCategoria()+"'";

        ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);

        ArrayList<Articolo> articoli = new ArrayList<>();

        risultato.forEach(riga ->{

            Articolo articolo = getFromArray(riga);

            articoli.add(articolo);

        });

        return articoli; 
    }
public ArrayList<Articolo> findByReparto(Reparto reparto) 
{
     String query = "SELECT * FROM articolo WHERE id_reparto = '"+reparto.getIdReparto()+"'";

        ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);

        ArrayList<Articolo> articoli = new ArrayList<>();

        risultato.forEach(riga ->{

            Articolo articolo = getFromArray(riga);

            articoli.add(articolo);

        });

        return articoli; 
}
    /* Per creare la fascia massima useremo //java.lang.Float.MAX_VALUE;
    */

    @Override
    public ArrayList<Articolo> findbyFascia(float a, float b) 
    {
        String query = "SELECT * FROM articolo WHERE prezzo >= '"+a+"'"
                  +" AND prezzo < '"+b+"'";

        ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);

        ArrayList<Articolo> articoli = new ArrayList<>();

        risultato.forEach(riga ->{

            Articolo articolo = getFromArray(riga);

            articoli.add(articolo);

        });

        return articoli; 
    }

    public Articolo findbyNome(String nome)
    {
        String query = "SELECT * FROM articolo WHERE nome ='"+nome+"'";
        ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);
        if (risultato.isEmpty()) {
            return null;
        }

        String[] riga = risultato.get(0);

        Articolo articolo = getFromArray(riga);

        return articolo;
    }

    public ArrayList<Articolo> findOthers(Articolo articolo)
    {
        String query = "SELECT * FROM articolo WHERE id_articolo <>"+articolo.getIdArticolo();

        ArrayList<String[]> risultato = DbConnection.getInstance().eseguiQuery(query);

        ArrayList<Articolo> articoli = new ArrayList<>();

        risultato.forEach(s ->{

            Articolo a= getFromArray(s);

            articoli.add(a);

        });

        return articoli; 
    }


}

public class GestoreBSN 
{
    private static GestoreBSN instance;

    public static GestoreBSN getInstance() 
    {
        if(instance == null)
        {
            instance = new GestoreBSN();
        }
        return instance;
    }

    public void createArticolo(String nome,float prezzo,int disponibilita,int sconto,String descrizione,Reparto reparto,Categoria categoria,Produttore produttore,Distributore distributore)
    {
       Articolo articolo = new Articolo();
       articolo.setNome(nome);
       articolo.setPrezzo(prezzo);
       articolo.setSconto(sconto);
       articolo.setDescrizione(descrizione);
       articolo.setCategoria(categoria);
       articolo.setReparto(reparto);
       articolo.setProduttore(produttore);
       articolo.setDistributore(distributore);
       ArticoloDAO.getInstance().add(articolo);
    }

    public void createBundle(ArrayList<Articolo> listaArticoli,Articolo articolo)
    {
        Bundle bundle = new Bundle();
        bundle.setArticolo(articolo);        
        listaArticoli.forEach(s->
        {
            bundle.setAssociato(s);
            BundleDAO.getInstance().add(bundle);
        });
        bundle.setListaArticoli(listaArticoli);
        articolo.setPrezzo(bundle.getPrezzo());
        articolo.setSconto(0);
        ArticoloDAO.getInstance().update(articolo);
    }



    public void delete(Articolo articolo)
    {
        ArticoloDAO.getInstance().remove(articolo);
    }

    public void updateArticolo(Articolo articolo)
    {
        ArticoloDAO.getInstance().update(articolo);
    }
}

0 个答案:

没有答案