Como posso resolver isso, se der é claro!

6 respostas
D

Eu estou fazendo um insert dentro de uma tabela lendo os dados de um arquivo texto, só que minha tabela como deve ser, tem chave primária, mas no meu arquivo texto alguns dados(códigos) se repetem, então quando o java começa a inserir dá erro, pois já tem um determinado código inserido e ele tenta inserir novamente, teria como ele pular esse cara que já foi inserido e continuar inserindo os outros???

Um abraço a todos, espero que entendam meu problema!!

estou utilizando um o insert into!!

No aguardo!!

6 Respostas

R

vc poderia procurar no banco de dados o codigo antes de tentar inseri-lo…

assim ele nao daria erro ao inserir dados duplicados…

falow

karluqs

Coloca a execução do Insert dentro do um bloco try…catch, assim mesmo que dê o erro não tem problema que ele continua no loop

Try

{

// insert aqui

}

catch (SQLException ex)

{

}

Se for possivel, toda vez que for inserir um registro, guarde o codigo em um Vector, assim antes de executar o insert faça uma busca no Vector para ver se o código atual já foi inserido, isso evita tentativas de insert que estiverem duplicadas no arquivo texto.

D

Obrigado galera,

Karluqs, meu insert já está dentro de um try {}, a únoda diferença é que estou usando um while() para poder retornar todos os valores.

está assim
Try
{


while(rs.next())

{

String query = " insert into …"

}

}

…

catch (SQLException sqlex)

{

…

}

só que ele para quando encontra um código já inserido!!??

Você teria um exemplo de como posso fazer para jogar os códigos dentro de um vetor e depois comparar ??
Eu não estou entendendo como vou fazer isso??

thiagorani

Altera a estrutura da sua Tabela.
Coloque uma unique constraint, assim ele nao permite a inserção de codigos duplicados.
Qual banco voce ta usando???

Return

Thiago.

karluqs

darta.lima inverta o código que vc fez da seguinte forma, assim ele sempre vai ficar no loop até o fim ok

while(rs.next())
{

Try

{

String query = " insert into …"

}

catch (SQLException sqlex)

{

}  // fim do try

} // fim do while

Para usar com o vector faça o seguinte, de uma estudada na classe Vector, vai dar um pouco de trabalho, mas antes escrever umas linhas a mais do que deixar ele tentar inserir a toa, pois conexao ao banco sempre demora muito mais tempo, mas só se vc tiver certeza que vai haver uma quantidade enorme de registros duplicados senão não compensa, vc vai ter que fazer algo assim:

Vector ListaCodigos = new Vector(0);

while(rs.next())
{

String Codigo;

// implemente um modo de pegar o código que você está inserindo aqui e jogue em Codigo

// se todas as suas linhas seguirem um padrão então você pode ter certeza de onde começa o código

// Ex. supondo que o texto segue um padrão como abaixo o código vai estar em determinada posicao (35 no exemplo abaixo)

//INSERT INTO (CODIGO, NOME) VALUES (10, ‘NOME’);

//INSERT INTO (CODIGO, NOME) VALUES (12, ‘TESTE’);

// assim vc pode pegar os caracteres da posicao 35 até a virgula para pegar o codigo e joga-los na String Codigo
// se encontrou volta no loop

if (ListaCodigos.indexOf(Codigo) >= 0)

continue;

else

ListaCodigos.addElement(Codigo);
Try

{

String query = " insert into …"

}

catch (SQLException sqlex)

{

}  // fim do try

} // fim do while

Ah chave primária já é uma constraint Thiago, então não vai resolver.

D

Valeu, entendi, agora funcionou, fiz as mudanças que você me mostrou acima, não criei o vetor pois são poucos registros!!

Muito obrigado!!

Qualquer coisa grito novamente!!

Criado 20 de fevereiro de 2003
Ultima resposta 20 de fev. de 2003
Respostas 6
Participantes 4