Erro no update

Estou fazendo um projeto de atualizar imposto, na parte do select para fazer a requisição e comparar com o banco está tudo ok, porém o update que não está dando muito certo.
public void alterarImposto() throws SQLException {
Retorno retorno = new Retorno();

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

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

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

O Update está assim, agora a main já esta 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 alterado com sucesso");
        System.out.println("-------------------------------------------------------------------------");
        
        
    }

}

O erro em questão
Exception in thread “main” java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at dao.NcmDAO.alterarImposto(NcmDAO.java:55)
at com.softcom.produtoncm.Teste.main(Teste.java:52)

na linha 55, qual valor que está chegando?

acredito eu que achei o problema, eu vi que no banco o primeiro valor que retorna é uma String " ", logo " " não pode transformar em inteiro e assim da o erro.