Ir ao conteúdo
  • Cadastre-se

Java Erro no Update do produto


Posts recomendados

Bom dia, então eu estou fazendo um projeto que faz uma requisição em um site e retorna o valor dos novos impostos entre outras coisas, a parte do select e enviar a requisição está tudo ok, porém a parte introduzir o valor no banco não muito, o update está desta forma:

public void alterarImposto() throws SQLException {
        Retorno retorno = new Retorno();

        int nacional =  Integer.parseInt(retorno.getNacional());
        int importado = Integer.parseInt(retorno.getImportado());
        int estadual =  Integer.parseInt(retorno.getEstadual());
        int municipal = Integer.parseInt(retorno.getMunicipal());
        int codigo = Integer.parseInt(retorno.getCodigo());
        try {
            ps = conexao
                    .prepareStatement("UPDATE TABELAIBTP "
                            + "SET ALIQNAC = ?, ALIQIMP = ?, ALIQESTADUAL = ?, ALIQMUNICIPAL = ? "
                            + "WHERE CODIGONCM = ?");

            ps.setInt(1, nacional);
            ps.setInt(2, importado);
            ps.setInt(3, estadual);
            ps.setInt(4, municipal);
            ps.setInt(5, codigo);

            ps.executeUpdate();
        } catch (SQLException ex) {
            throw new SQLException("Erro alterarImposto: " + ex.getMessage());
        }
    }

Os campos ALIQNAC, ALIQIMP, ALIQESTADUAL e ALIQMUNICIPAL são do tipo Numeric

E o metodo main está desta forma:

public static void main(String[] args) throws SQLException {
        NcmDAO ncmD = new NcmDAO();
        int codigo = 0;

        for (ncmMOD ncm : ncmD.carregarTeste()) {
            if (!"".equals(ncm.getCodigo())) {
                codigo = Integer.parseInt(ncm.getCodigo());

            }
            if (codigo < 9999999) {
                ncm.setCodigo("0" + ncm.getCodigo());
            }
            
            Client client = ClientBuilder.newClient();
            Response response = client.target("https://apidoni.ibpt.org.br/api/v1/produtos?"
                    + "token=" + ncm.getToken()
                    + "&cnpj=" + ncm.getCnpj()
                    + "&codigo=" + ncm.getCodigo()
                    + "&uf=" + ncm.getUF()
                    + "&ex=" + ncm.getEX()
                    + "&descricao=" + ncm.getDescricao()
                    + "&unidadeMedida=" + ncm.getUnidadeMedida()
                    + "&valor=" + ncm.getValor()
                    + "&gtin=" + ncm.getGtin())
                    .request(MediaType.APPLICATION_JSON)
                    .get();

            String s = response.readEntity(String.class);

            Gson gson = new GsonBuilder().create();
            Type collectionType = new TypeToken<Retorno>() {
            }.getType();

            Retorno r = gson.fromJson(s, collectionType);
           
            ncmD.alterarImposto();
            System.out.println("Imposto auterado com sucesso");
            System.out.println("-------------------------------------------------------------------------");
            
            
        }

    }

O Erro fica assim:

Exception in thread "main" java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Integer.java:542)
    at java.lang.Integer.parseInt(Integer.java:615)
    at dao.NcmDAO.alterarImposto(NcmDAO.java:55)
    at com.softcom.produtoncm.Teste.main(Teste.java:52)

 

Link para o comentário
Compartilhar em outros sites

Meu setCodigo() ta como String, porque no banco o campo codigo ele ta como String, ai não tem como eu retornar um valor inteiro em um getCodigo() String, tem ncm (codigo de produto) que tem um 0 antes da primeira casa decimal, por isso que eu coloquei este 0 pois o ncm 1234567 na verdade teria que ser 01234567, entendeu?

Link para o comentário
Compartilhar em outros sites

Entendi, é que pela mensagem de erro, ele ta dando problema em alguma conversão do Integer.parseInt(), ai eu achei que poderia ter algumas coisa haver com essa parte do código.

if (!"".equals(ncm.getCodigo())) {
                codigo = Integer.parseInt(ncm.getCodigo());

            }
            if (codigo < 9999999) {
                ncm.setCodigo("0" + ncm.getCodigo());
            }

 

Link para o comentário
Compartilhar em outros sites

Hum, entendi. Me tira uma duvida nessa parte do código

int nacional =  Integer.parseInt(retorno.getNacional());
int importado = Integer.parseInt(retorno.getImportado());
int estadual =  Integer.parseInt(retorno.getEstadual());
int municipal = Integer.parseInt(retorno.getMunicipal());
int codigo = Integer.parseInt(retorno.getCodigo());

na classe retorno o nacional, importado, estadual e municipal estão como String também?

Link para o comentário
Compartilhar em outros sites

@leonardo0308

"update tabelaibtp "
                            + "set aliqnac = ?, aliqimp = ?, aliqestadual = ?, aliqmunicipal = ? "
                            + "where codigoncm = ? and clafis is not null and clafis <> ' ' "; 

deve ser assim que ficaria o update

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!