Falha ao Inserir no Banco de Dados

2 respostas
javamysql
T

Quando vou inserir valores em uma determinada tabela, aparece o erro java.lang.NullPointerException apontando para o seguinte código:

package lotofacil2.pkg0;

import java.sql.PreparedStatement;
import javax.swing.JOptionPane;

public class Dao {
    
    private final String INSERT = "INSERT INTO JOGO VALUES( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    private Pojo pojo;
       
    public void Dao(Pojo pojo){
    this.pojo = pojo;
}

public boolean inserir() {
    try {
        
        PreparedStatement ps = BancoDados.getConexao().prepareStatement(INSERT);
        ps.setInt(1, pojo.getCodJogo());
        ps.setInt(2, pojo.getJogo1());
        ps.setInt(3, pojo.getJogo2());
        ps.setInt(4, pojo.getJogo3());
        ps.setInt(5, pojo.getJogo4());
        ps.setInt(6, pojo.getJogo5());
        ps.setInt(7, pojo.getJogo6());
        ps.setInt(8, pojo.getJogo7());
        ps.setInt(9, pojo.getJogo8());
        ps.setInt(10, pojo.getJogo9());
        ps.setInt(11, pojo.getJogo10());
        ps.setInt(12, pojo.getJogo11());
        ps.setInt(13, pojo.getJogo12());
        ps.setInt(14, pojo.getJogo13());
        ps.setInt(15, pojo.getJogo14());
        ps.setInt(16, pojo.getJogo15());
        ps.setInt(17, pojo.getJogo16());
        ps.setInt(18, pojo.getJogo17());
        ps.setInt(19, pojo.getJogo18());
        JOptionPane.showMessageDialog(null, "Entrou no Inserir!");
        return BancoDados.executaUpdate(ps);

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Não foi possível inserir no banco de dados.");
        e.printStackTrace();
        return false;
    }
}
}

Os valores obtidos são todos inteiros, o primeiro registro vem de uma variável comum os demais valores vem de um array alternando somente as posições onde encontram-se os valores.

Esgotei minhas alternativas e já não sei mais o que fazer.

Agradeço qualquer ajuda ou sugestão!

2 Respostas

Jonas_B_a_r_r_o_s

Não entendi porque você está usando esse metodo void DAO.

public boolan inserir (){
ArrayList<Pojo> insere = Pojo.getAdiciona(); // o metodo getAdiciona() deve estar na classe Controller e 
também é um ArrayList<Pojo>
}

Você deve receber um objeto pojo antes de usar os gets, no caso aqui é um ArrayList Por exemplo, onde você deu os Setters de pojo? Você pode criar um ArrayList que receba um objeto que ja tenha sido criado. E nesse metodo inserir voce o recebe; ArrayList lista = Pojo.getAdiciona(); //getAdiciona é static

Esse metodo getAdicionaPojo(), teria que está numa classe de Controller por exemplo, e essa aqui de DAO de inserir receberia o objeto adicionado em Controller, aí sim voce poderia usar :
ps.setInt(1, pojo.getCodJogo());

1 – Crie um metodo para adicionar um objeto Pojo a um ArrayList em uma classe Controller, um metodo que retorne o ArrayList – Usando os setters para adicionar

2 – Receba essa List de objeto pojo na Classe DAO – Usando os getters para pegar e inserir no banco

T

Bom, acredito que tenha me sugerido pois não conhece meu código.

Para melhor compreensão, já estou fazendo essa inserção que me sugeriu na classe principal.
Segue abaixo:

public void setPersistencia() {
pojo.setCodJogo(seqjogo);
    pojo.setJogo1(sorteados[1]);
    pojo.setJogo2(sorteados[2]);
    pojo.setJogo3(sorteados[3]);
    pojo.setJogo4(sorteados[4]);
    pojo.setJogo5(sorteados[5]);
    pojo.setJogo6(sorteados[6]);
    pojo.setJogo7(sorteados[7]);
    pojo.setJogo8(sorteados[8]);
    pojo.setJogo9(sorteados[9]);
    pojo.setJogo10(sorteados[10]);
    pojo.setJogo11(sorteados[11]);
    pojo.setJogo12(sorteados[12]);
    pojo.setJogo13(sorteados[13]);
    pojo.setJogo14(sorteados[14]);
    pojo.setJogo15(sorteados[15]);
    pojo.setJogo16(0);
    pojo.setJogo17(0);
    pojo.setJogo18(0); 
}

public boolean incluirBD() {
    setPersistencia();
    return dao.inserir();
}

Não coloquei a classe toda pois é muito grande, mas já dá pra ter uma ideia do que fiz.
Bom, sou programador novo e como programo as vezes para praticar, tenho algumas coisas feitas.
Desse modo que fiz, tenho aplicações funcionando a inserção, porém em nenhuma delas recebiam valores de um array.

Se conseguir me ajudar, serei grato!

Criado 1 de julho de 2016
Ultima resposta 2 de jul. de 2016
Respostas 2
Participantes 2