Erro em manipulação de banco de dados!

2 respostas
kiq095

Oi galera estou aqui de novo mas com um erro diferente, e que eu tenho que copiar uma tabela de um banco de dados para outra tabela em outro banco, mas tabelas com nomes diferentes e nome de campos diferentes…

A tabela que vai receber os dados sempre a mesma não muda então eu coloquei esses nomes de campos em um vetor campos_nome e fiz o seguinte código …

SQL_COPIAR=St.executeQuery("SELECT   Campos 1   FROM  tabela 1 "); // recuperar a tabela que vai ser copiada 
                              
                      

                                while(SQL_COPIAR.next()){ // percorrer toda a tabela 

                                     
                                 
                                  for(int t=0;t<=cont;t++){

                                      
                                         Coluna=SQL_COPIAR.getString(campos_nome[t]); // for para recuperar os dados de cada campo
                                         Dados=Dados+",'"+Coluna+"'";
                                        
                                      
                                     if(campos_nome[t] ==null){ // finalizar o for
                                       
                                        t=cont+4;
                                    }

Esse código esta me retornando o que eu quero e formando um string … que é EX:

COD_ALUNO, NOME, MATRICOLA, ETC.

‘1, Kiq095, 111111, GUJ.com nesse mesmo formato …

Eu pego essa string e salvo na outra tabela desse jeito…

St.executeUpdate("INSERT INTO "tabela 2" ("Campos 2") VALUES ("+Dados+")"); // salvar usando a string formada

mas não sei o porque na hora de sair do for da um erro,
mas o Netbeans não mostra o erro, e nem fala que erro que é … só Um catch que coloquei com um JOpionPane que me retorna a seguinte mensagem

ERROjava.lang.AttayIndexOutOfBoundsExceotion: 2

ai o programa não copia a tabela e nem faz nada mas o NetBeans fala que foi construído com sucesso !

O que seria esse erro ?
E como corrigi-lo ?
E tem um jeito melhor para retirar esses dados nesse mesmo formato ?

2 Respostas

douglaskd

não vou montar o código pra você, mas vou te dar dicas:

  • Crie uma classe aluno com gets e sets.

  • Use nomes mais expressivos nas suas variaveis…o que é SQL_COPIAR ? é um result set, então use por exemplo rs, ou rsAluno, ou resultSetAluno

  • Crie uma ArrayList ListaDeAlunos = new ArrayList() antes do while

  • Crie um objeto aluno e carregue os campos nesse objeto e então grave o objeto na lista.

Resumindo: Faça seu método retornar uma lista carregada com objetos Aluno populados.

e depois no método inserir você itera sobre a lista e pega as propriedades de cada aluno.

marcospaulo.suporte

Só uma duvida… qual banco vc usa?

Criado 21 de setembro de 2012
Ultima resposta 21 de set. de 2012
Respostas 2
Participantes 3