Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Francisco Angelini

Java Erro no Update do produto

Recommended Posts

Postado (editado)

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)

 

Editado por Simon Viegas
Inserir tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia @Francisco Angelini

 

ncm.setCodigo("0" + ncm.getCodigo());

Nessa parte do codigo o "setCodigo" não deveria receber um numero? pois "0" é considerado uma String.

  • Curtir 1

Compartilhar este post


Link para o post
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?

Compartilhar este post


Link para o post
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());
            }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu tiro o alterarImposto() ele funciona normalmente, pega os dados, faz a requisição e exibe o que retornou do site, porém quando eu envio pro banco da esse erro

 

Compartilhar este post


Link para o post
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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim ela retorna uma String do valor da requisição do site, porém acho que eu achei o erro, fiz um select no banco o primeiro valor que retorna é uma String com o valor " " (no caso é um espaço). vou ter que fazer uma alteração no update.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, caso não resolva o problema ou tenha mais alguma duvida é só falar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@leonardo0308

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

deve ser assim que ficaria o update

Editado por DiF
Botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×