Ir ao conteúdo
  • Cadastre-se

Java Null Pointer Exception no preparedStatement


Posts recomendados

Olá pessoa, estou tendo um problema de null pointer no sistema que estou desenvolvendo usando MVC & DAO, estou tentando fazer um insert no banco de dados fazendo uso de uma chave estrangeira.

porém ao chegar no insert do DAO em  pstm.setInt(1, equipamento.getUnidade().getId()); ao tentar pegar o modelo unidade de equipamento getunidade e pegar seu id, a execução para e aponta:

 

Citação

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "model.Unidade.getId()" because the return value of "model.Equipamento.getUnidade()" is null

 

Equipamento.java

package model;

public class Equipamento 
{
    
    int id;
    
    Unidade unidade = new Unidade();
    
    String tipoequip;//OBRIGATORIO
    String tombo;//SE HOUVER
    String serie;//OBRIGATORIO
    String fornecedor;//OBRIGATORIO
    String fabricante;//OBRIGATORIO
    String modelo;//OBRIGATORIO
    String status; //Boolean, ou string?
    String equipamento;//OBRIGATORIO
    String observacao;//não
    
    //metodo construtor passando todos campos como obrigatorios
    public Equipamento(int id, Unidade unidade,String tipoequip,String tombo, String serie, String fornecedor, String fabricante, String modelo, 
                      String status, String equipamento, String observacao)
    {
        
        this.id = id;
        this.unidade = unidade;
        this.tipoequip = tipoequip;
        this.tombo = tombo;
        this.serie = serie;
        this.fornecedor =  fornecedor;
        this.fabricante = fabricante;
        this.modelo = modelo;
        this.status = status;
        this.equipamento = equipamento;
        this.observacao = observacao;
        
    }       
    
    //metodo construtor passando apenas os campos obrigatorios sem o id
    public Equipamento(Unidade unidade,String tipoequip,String tombo, String serie, String fornecedor, String fabricante, String modelo, 
                      String status, String equipamento, String observacao)
    {
        
        this.unidade = unidade;
        this.tipoequip = tipoequip;
        this.tombo = tombo;
        this.serie = serie;
        this.fornecedor =  fornecedor;
        this.fabricante = fabricante;
        this.modelo = modelo;
        this.status = status;
        this.equipamento = equipamento;       
        this.observacao = observacao;
        
    }            
    
    //metodo construtor vazio(NÃO APAGUE)
    public Equipamento() 
    {
        
    }
    
    //getters e setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Unidade getUnidade() {
        return unidade;
    }

    public void setUnidade(Unidade unidade) {
        this.unidade = unidade;
    }    

    public String getTipoequip() {
        return tipoequip;
    }

    public void setTipoequip(String tipoequip) {
        this.tipoequip = tipoequip;
    }

    public String getTombo() {
        return tombo;
    }

    public void setTombo(String tombo) {
        this.tombo = tombo;
    }

    public String getSerie() {
        return serie;
    }

    public void setSerie(String serie) {
        this.serie = serie;
    }

    public String getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(String fornecedor) {
        this.fornecedor = fornecedor;
    }

    public String getFabricante() {
        return fabricante;
    }

    public void setFabricante(String fabricante) {
        this.fabricante = fabricante;
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getEquipamento() {
        return equipamento;
    }

    public void setEquipamento(String equipamento) {
        this.equipamento = equipamento;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }      
         
}

 

Unidade.java

package model;


public class Unidade 
{
    
    int id;
    String unidadenome;

    //metodo construtor
    public Unidade(int id, String unidadenome) 
    {
        this.id = id;
        this.unidadenome = unidadenome;
    }
    
    //metodo construtor sem id
    public Unidade(String unidadenome)
    {
        
        this.unidadenome = unidadenome;
        
    }        
    
    //metodo construtor vazio
    public Unidade() 
    {
        
        
        
    }
    
    //getters e setters

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUnidadenome() {
        return unidadenome;
    }

    public void setUnidadenome(String unidadenome) {
        this.unidadenome = unidadenome;
    }
    
    public String unidadeToString()
    {
        
        return getUnidadenome();
        
    }       
    
    public boolean equals(Object objeto)
    {
        
        Unidade u = (Unidade) objeto;
        
        if(this.id == u.getId())
        {
            
            return true;
            
        }
        else
        {
            
            return false;
            
        }    
        
    }        
    
}

 

EquipamentoDAO.java

package model.DAO;

import controller.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import model.Equipamento;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import model.Unidade;

public class EquipamentoDAO 
{
    
    private final Connection conexao;
    
    //metodo construtor
    public EquipamentoDAO(Connection conexao)
    {
        
        this.conexao = conexao;
        
    }        
    //função para inserir(insert)
    public void inserir(Equipamento equipamento) throws SQLException
    {
        
        //string sql
        String sql = "insert into equipamento(unidade,tipoequip,tombo,serie,fornecedor,fabricante,modelo,status,equipamento,observacao)values (?,?,?,?,?,?,?,?,?,?)";
        
        //criamos um statement para executar a query sql
        PreparedStatement pstm = conexao.prepareStatement(sql);
        
        try
        {
            
            //antes de executar pstm setString
            pstm.setInt(1, equipamento.getUnidade().getId());
            pstm.setString(2, equipamento.getTipoequip());
            pstm.setString(3, equipamento.getTombo());      
            pstm.setString(4, equipamento.getSerie());
            pstm.setString(5, equipamento.getFornecedor());   
            pstm.setString(6, equipamento.getFabricante());   
            pstm.setString(7, equipamento.getModelo());
            pstm.setString(8, equipamento.getStatus());
            pstm.setString(9, equipamento.getEquipamento());     
            pstm.setString(10, equipamento.getObservacao());
            //execute o pstm
            pstm.execute();            
            
        }
        catch(SQLException ex)
        {
            
            JOptionPane.showMessageDialog(null, "Error ao inserir equipamento no banco de dados!" + ex);            
            
        }
        finally
        {
               
        //feche a conexao e o pstm    
        conexao.close();    
        pstm.close();                
            
        }                
            
    }

 

CadastroEquipamentoController.java

package controller;

import controller.helper.CadastroEquipamentoHelper;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import model.Equipamento;
import view.TelaCadastroEquipamento;
import view.TelaPrincipal;
import java.sql.Connection;
import model.DAO.EquipamentoDAO;
import java.sql.SQLException;
import javax.swing.table.DefaultTableModel;
import model.DAO.UnidadeDAO;
import model.Unidade;

public class CadastroEquipamentoController 
{
    
    //cria arraylist do tipo Equipamento chamado equipamentos   
    ArrayList<Equipamento> equipamentos = new ArrayList<Equipamento>();    
    
    //cria variavel do tipo telacadastroequipamento e CadastroEquipamentoHelper e chamando-as de view e helper
    private TelaCadastroEquipamento view;
    private CadastroEquipamentoHelper helper;
    
    //cria variavel tipo TelaPrincipal chamada telaprincipal
    public TelaPrincipal TelaPrincipal;  
    
    //metodo construtor    
    public CadastroEquipamentoController(TelaCadastroEquipamento view) {
        this.view = view;
        this.helper = new CadastroEquipamentoHelper(view);
    }  

    //metodo construtor tela principal
    public CadastroEquipamentoController(TelaPrincipal viewprincipal) {
        this.TelaPrincipal  = viewprincipal;
    }    
       
    //metodo salvar equipamento
    public void salvarEquipamento()
    {
        
        //comparações logicas
        if(view.getTxtUnidade().getSelectedIndex() == 0 && view.getTxtTipoEquip().getText().trim().isEmpty() && view.getTxtTombo().getText().trim().isEmpty()
        && view.getTxtSerie().getText().trim().isEmpty() && view.getTxtFornecedor().getText().trim().isEmpty() && view.getTxtFabricante().getText().trim().isEmpty() &&
        view.getTxtModelo().getText().trim().isEmpty() && view.getTxtStatus().getSelectedIndex() == 0 && view.getTxtEquipamento().getSelectedIndex() == 0)
        {

            JOptionPane.showMessageDialog(null, "Campos obrigatorios vazios, preencha-os!!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);

        }
        else if(view.getTxtUnidade().getSelectedIndex() == 0 && view.getTxtTombo().getText().trim().isEmpty() && view.getTxtSerie().getText().trim().isEmpty())
        {

            JOptionPane.showMessageDialog(null, "Combobox unidade, campos tombo e serie vazios preencha-os!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);

        }
        else if(view.getTxtTipoEquip().getText().trim().isEmpty())
        {

            JOptionPane.showMessageDialog(null, "Campo tipo equip esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);

        } 
        else if(view.getTxtFornecedor().getText().trim().isEmpty())
        {
            
            JOptionPane.showMessageDialog(null, "Campo fornecedor esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);            
            
        }    
        else if(view.getTxtFabricante().getText().trim().isEmpty())
        {
            
            JOptionPane.showMessageDialog(null, "Campo fabricante esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);            
            
        }          
        else if(view.getTxtModelo().getText().trim().isEmpty())
        {
            
            JOptionPane.showMessageDialog(null, "Campo modelo esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);            
            
        }  
        else if(view.getTxtStatus().getSelectedIndex() == 0)
        {
            
            JOptionPane.showMessageDialog(null, "Combobox status esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);            
            
        } 
        else if(view.getTxtEquipamento().getSelectedIndex() == 0)
        {
            
            JOptionPane.showMessageDialog(null, "Campo equipamento esta vazio preencha-o!","ATENÇÃO", JOptionPane.WARNING_MESSAGE);            
            
        }              
        
            //compara se todos os campos foram preenchidos
            if(view.getTxtUnidade().getSelectedItem() != null && view.getTxtTipoEquip().getText().length() > 0 && view.getTxtTombo().getText().length() > 0
            &&view.getTxtSerie().getText().length() > 0 && view.getTxtFornecedor().getText().length() > 0 && view.getTxtFabricante().getText().length() > 0 &&
            view.getTxtModelo().getText().length() > 0 &&view.getTxtStatus().getSelectedItem() != null && view.getTxtEquipamento().getSelectedItem() != null
            && view.getTxtObservacao().getText().trim().isEmpty() || !view.getTxtObservacao().getText().trim().isEmpty())
            {
                //pega um equipamento da view
                Equipamento equipamento = helper.obterModeloSemID();
                
                try {
                    //cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
                    Connection conexao = new Conexao().Conectar();
                    //cria objeto do tipo EquipamentoDAO chamado equipamentoDAO passando novo EquipamentoDAO recebendo conexao
                    EquipamentoDAO equipamentoDAO = new EquipamentoDAO(conexao);
                    //arraylist do tipo equipamento chamado equipamentos recebe equipamentoDAO.selecioneallequipamento
                    equipamentoDAO.inserir(equipamento);   
                    
                    //helper chama o metodo bloquear campos
                    helper.bloquearCampos();            
            
                    //helper chama metodo limpar tela(Campos)
                    helper.limparTela();    
            
                    //chama tabela equipamentos;
                    tabelaEquipamentos();               
            
                    JOptionPane.showMessageDialog(null, "Equipamento inserido com sucesso!");
            
                    //pegue exceção sql  
                } catch (SQLException ex) {
            
                    JOptionPane.showMessageDialog(null, "Error ao inserir equipamento no banco de dados! /nError:"+ex);
        
                }     
                
            }
    //metodo tabelaEquipamentos
    public void tabelaEquipamentos()
    {
        
        //se a view a tabela for diferente de nulo
        if(view.jTabelaCadEquip != null)
        {
            
            //modelo do tipo defaultablemodel recebe convertendo para defaulttablemodel a view passando a tabela e pegando seu modelo
            DefaultTableModel modelo = (DefaultTableModel) view.jTabelaCadEquip.getModel();
            
            //se as linhas do modelo for maior que zero
            if(modelo.getRowCount() > 0)
            {
                
                //sete as linhas como 0
                modelo.setRowCount(0);
                
            }    
            
            try
            {
                
                //cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
                Connection conexao = new Conexao().Conectar();
                //cria objeto do tipo EquipamentoDAO chamado equipamentoDAO passando novo EquipamentoDAO recebendo conexao
                EquipamentoDAO equipamentoDAO = new EquipamentoDAO(conexao);
                
                //logins do tipo arraylist do tipo Equipamento recebe equipamentoDAO chamando metodo selecione todos equipamentos
                ArrayList<Equipamento> equipamentos = equipamentoDAO.selecioneAllEquipamento();
                
                //para cada equipamento no arraylist equipamentos
                for(Equipamento equipamento : equipamentos)
                {
                    
                    //quantidade de linhas que o objeto vai ter
                    Object[] linha = new Object[11];
                    
                    //pegue as respectivas linhas de cada equipamento e as sete
                    linha[0] = equipamento.getId();
                    linha[1] = equipamento.getUnidade().getUnidadenome();
                    linha[2] = equipamento.getTipoequip();
                    linha[3] = equipamento.getTombo();
                    linha[4] = equipamento.getSerie();
                    linha[5] = equipamento.getFornecedor();
                    linha[6] = equipamento.getFabricante();
                    linha[7] = equipamento.getModelo();
                    linha[8] = equipamento.getStatus();
                    linha[9] = equipamento.getEquipamento();
                    linha[10] = equipamento.getObservacao();
                    
                    //adicione as linhas ao modelo
                    modelo.addRow(linha);                                        
                    
                }    
                
            }    
           
            catch(SQLException ex)
            {
                
                JOptionPane.showMessageDialog(null, "Error ao preencher tabela!" + ex);
                
            }               
            
        }    
        
    } 
    
 public void atualizaUnidade()
 {
     
     try
     {
         
         //buscar unidade no banco de dados
         
            //cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
            Connection conexao = new Conexao().Conectar();  
            
            //cria objeto do tipo UnidadeDAO unidadedao passando UnidadeDAO recebendo conexao
            UnidadeDAO unidadedao = new UnidadeDAO(conexao);
            
            //cria arraylist de unidade chamado unidades passando o objeto unidadedao do tipo Unidade chamando o metodo selecioneAllUnidade
            ArrayList<Unidade> unidades = unidadedao.selecioneAllUnidade();
            
            //exibir login nome no combobox nome
            helper.preencherUnidade(unidades);
         
     }
     catch(SQLException ex)
     {
         
         JOptionPane.showMessageDialog(null,"Error a preencher combobox unidade:" +ex);
         
     }    
     
 }    
}

 

CadastroEquipamentoHelper.java

package controller.helper;
import java.util.ArrayList;
import javax.swing.DefaultComboBoxModel;
import model.Equipamento;
import model.Unidade;
import view.TelaCadastroEquipamento;


public class CadastroEquipamentoHelper 
{
    
    private final TelaCadastroEquipamento view;
    
    //metodo construtor
    public CadastroEquipamentoHelper(TelaCadastroEquipamento view) {
        this.view = view;
    } 
    
    //metodo obter modelo sem id apenas para a inserção dos campos mais importantes
    public Equipamento obterModeloSemID()
    {
        

       Unidade unidade = obterUnidade();//Unidade unidade recebe metodo obter unidade neste helper
       String tipoequip = view.getTxtTipoEquip().getText();//String tipoequip recebe view pegue o getTextUnidade e pegue o texto
       String tombo = view.getTxtTombo().getText();//String tombo recebe view pegue o getTxtTombo e pegue o texto
       String serie = view.getTxtSerie().getText();//String serie recebe view pegue o getTxtSerie e pegue o texto
       String fornecedor = view.getTxtFornecedor().getText();//String fornecedor recebe view pegue o getTxtFornecedor e pegue o texto
       String fabricante = view.getTxtFabricante().getText();//String fabricante recebe view pegue o get TxtFabricante e pegue o texto
       String modelo = view.getTxtModelo().getText();//String modelo recebe view pegue o getTxtmodelo e pegue o texto
       String status = view.getTxtStatus().getSelectedItem().toString();//String status recebe view pegue o getselecteditem para string
       String equipamentouni = view.getTxtEquipamento().getSelectedItem().toString();//String equipamentouni recebe view pegue o getselected item para string
       String observacao = view.getTxtObservacao().getText();//String observacao recebe view pegue o getTextObservacao e pegue o texto
       
        //construir objeto do tipo equipamento
        Equipamento equipamento = new Equipamento(unidade,tipoequip,tombo,serie,fornecedor, fabricante,modelo,status,equipamentouni,observacao);      

        return equipamento;        
        
    } 
    
    //metodo obter modelo com todos os campos
    public Equipamento obterModelo()
    {
       Integer id = Integer.parseInt(view.getTxtId().getText());
       Unidade unidade = obterUnidade();//Unidade unidade recebe metodo obter unidade neste helper
       String tipoequip = view.getTxtTipoEquip().getText();//String tipoequip recebe view pegue o getTextUnidade e pegue o texto
       String tombo = view.getTxtTombo().getText();//String tombo recebe view pegue o getTxtTombo e pegue o texto
       String serie = view.getTxtSerie().getText();//String serie recebe view pegue o getTxtSerie e pegue o texto
       String fornecedor = view.getTxtFornecedor().getText();//String fornecedor recebe view pegue o getTxtFornecedor e pegue o texto
       String fabricante = view.getTxtFabricante().getText();//String fabricante recebe view pegue o get TxtFabricante e pegue o texto
       String modelo = view.getTxtModelo().getText();//String modelo recebe view pegue o getTxtmodelo e pegue o texto
       String status = view.getTxtStatus().getSelectedItem().toString();//String status recebe view pegue o getselecteditem para string
       String equipamentouni = view.getTxtEquipamento().getSelectedItem().toString();//String equipamentouni recebe view pegue o getselected item para string
       String observacao = view.getTxtObservacao().getText();//String observacao recebe view pegue o getTextObservacao e pegue o texto
       
        //construir objeto do tipo equipamento
        Equipamento equipamento = new Equipamento(id,unidade,tipoequip,tombo,serie,fornecedor, fabricante,modelo,status,equipamentouni,observacao);      

        return equipamento;   
        
    }

    //metodo para setar modelo
    public void setModelo()
    {
        
        int setar = view.jTabelaCadEquip.getSelectedRow();
        
        view.txtId.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 0).toString());
        view.txtUnidade.setSelectedItem(view.jTabelaCadEquip.getModel().getValueAt(setar, 1).toString());   
        view.txtTipoEquip.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 2).toString());
        view.txtTombo.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 3).toString());
        view.txtSerie.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 4).toString());
        view.txtFornecedor.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 5).toString());
        view.txtFabricante.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 6).toString());  
        view.txtModelo.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 7).toString());     
        view.txtStatus.setSelectedItem(view.jTabelaCadEquip.getModel().getValueAt(setar, 8).toString());   
        view.txtEquipamento.setSelectedItem(view.jTabelaCadEquip.getModel().getValueAt(setar, 9).toString());   
        view.txtObservacao.setText(view.jTabelaCadEquip.getModel().getValueAt(setar, 10).toString());   
    }        
    
    //metodo para limpar os campos
    public void limparTela()
    {
        
        view.getTxtUnidade().removeAllItems();
        view.getTxtTipoEquip().setText("");
        view.getTxtTombo().setText("");
        view.getTxtSerie().setText("");
        view.getTxtFornecedor().setText("");
        view.getTxtFabricante().setText("");
        view.getTxtModelo().setText("");
        view.getTxtStatus().removeAllItems();
        view.getTxtEquipamento().removeAllItems();
        view.getTxtObservacao().setText("");
        view.getjTabelaCadEquip().clearSelection();
        
    }    
    
    //metodo para bloquear os campos
    public void bloquearCampos()
    {
        view.getTxtUnidade().setEnabled(false);
        view.getTxtTipoEquip().setEnabled(false);
        view.getTxtTombo().setEnabled(false);
        view.getTxtSerie().setEnabled(false);
        view.getTxtFornecedor().setEnabled(false);
        view.getTxtFabricante().setEnabled(false);
        view.getTxtModelo().setEnabled(false);
        view.getTxtStatus().setEnabled(false);
        view.getTxtEquipamento().setEnabled(false);
        view.getTxtObservacao().setEnabled(false);
        
        view.btnEditar.setEnabled(false);
        view.btnSalvar.setEnabled(false);
        view.btnExcluir.setEnabled(true);
        view.btnPesquisar.setEnabled(false);        
    }
    
    //metodo para desbloquear campos
    public void desbloquearCampos()
    {
        
        view.getTxtUnidade().setEnabled(true);
        view.getTxtTipoEquip().setEnabled(true);
        view.getTxtTombo().setEnabled(true);
        view.getTxtSerie().setEnabled(true);
        view.getTxtFornecedor().setEnabled(true);
        view.getTxtFabricante().setEnabled(true);
        view.getTxtModelo().setEnabled(true);
        view.getTxtStatus().setEnabled(true);
        view.getTxtEquipamento().setEnabled(true);
        view.getTxtObservacao().setEnabled(true);     
        
        
        view.btnEditar.setEnabled(true);
        view.btnExcluir.setEnabled(true);
        view.btnSalvar.setEnabled(true);
        view.btnPesquisar.setEnabled(true);            
        
    }  
    
    public Unidade obterUnidade()
    {
        view.getTxtUnidade().removeAllItems();
        
        return (Unidade) view.getTxtUnidade().getSelectedItem();
        
    }        
    
    public void preencherUnidade(ArrayList<Unidade> unidades)
    {
        
        view.getTxtUnidade().removeAllItems();
        
        DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtUnidade().getModel();
        
        for(Unidade unidade : unidades)
        {
            
            combomodel.addElement(unidade.unidadeToString());
            
        }    
        
    }    
    
}

 

Abreviei parte do codigo para não ficar muito extenso:
Projeto no github:https://github.com/YUSEIRENDER/SemurrCEI

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!