Gravar dados da JTable no Banco: erro[java.lang.String cannot be cast to java.lang.Integer]

2 respostas
franzzita

Bom dia Pessoal,

Estou com problema no meu código. Ele deve gravar no Banco de Dados as informações exibidas na JTable. O erro que está sendo exibido é esse: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer A exception aponta o erro para essa linha:
int parc = (Integer) tb.getValueAt(x, 0);

Esse é o código do método usado:

private void gravarParcelas()
   {
       try
       {
           DefaultTableModel tb = (DefaultTableModel) Tabela_Parcelas.getModel();
           
           //Classe DadoParcela possui os métodos para manipular os mesmos
           DadoParcela dados = new DadoParcela(); 
           
           for(int x=0; x < tb.getRowCount(); x++) //
           {               
               int parc = (Integer) tb.getValueAt(x, 0);
               String dat = (String) tb.getValueAt(x, 1);
               Float val = (Float) tb.getValueAt(x, 2); 
               int mes = (Integer) tb.getValueAt(x, 3);
               int ano = (Integer) tb.getValueAt(x, 4);
               int status = (Integer) tb.getValueAt(x, 5);
               int pagar = (Integer) tb.getValueAt(x, 6);
               int conta = Integer.valueOf(CampCodigo.getText());
               int p = x;
               
               dados.setParcela(parc);
               dados.setData(dat);
               dados.setValor(val);               
               dados.setMes(mes);
               dados.setAno(ano);
               dados.setStatus(status);
               dados.setPagar(pagar);
               dados.setConta(conta);
               dados.setParcelamento(p);
               
               listaDados.add(dados); //adiciona no ArrayList de DadoParcela
           }
       }
       catch(Exception erro)
       {
           JOptionPane.showMessageDialog(null,"Não foi possivel gravar Parcelas!" + erro);
           erro.printStackTrace();
       }
   }

Alguém sabe o que posso modificar?
Obrigada.
^^

2 Respostas

E

Repita comigo - cast em Java não é conversão, exceto no caso em que você faz o cast de um tipo primitivo em outro. Mas String e Integer não são tipos primitivos e não têm relação de herança, portanto não se pode fazer cast.

Você só pode fazer cast em Java se os tipos tiverem relação de herança. Por exemplo, pegar um objeto do tipo Integer e fazer o cast para Number.

No seu caso, você precisa fazer uma conversão usando provavelmente algo como:

int parc = Integer.valueOf ((String) tb.getValueAt(x, 0));

(Estou supondo que o elemento em x, 0 é do tipo string :slight_smile:

franzzita

Hahahaha
Entanglement, muito bom! :smiley:
Eu não sabia disso…

Deu certinho aqui… parece que era mesmo o problema!

Obrigada
\o

Criado 30 de março de 2012
Ultima resposta 30 de mar. de 2012
Respostas 2
Participantes 2