Galera, alguém sabe como tratar o erro em um executeBatch()? Sem que eu perca o restantes dos parametros setados com addBatch()?
Eu consigo ver o quanto de parametros foram adicionados até encontrar o erro dentro do catch(BatchUpdateException), porém apartir dai nao tenho ideia de como poderia tratar isso sem perder o restante dos dados.
Alguém ja teve problema parecido ou sabe como resolver? vlw.
Deixe eu ver se entendi bem: vamos supor que você tenha adicionado (com addBatch()) 20 comandos de UPDATE. Suponhamos que, ao executar o executeBatch(), 16 UPDATES deram certo e o 17º falhou. Você gostaria que os 16 bem sucedidos fossem comitados no banco. É isso?
Em caso afirmativo, tente usar o conn.setAutoCommit() antes do de criar o batch.
Eu gostaria que o restante fosse adicionado, entende? Que o problema que desse no 17° ficasse só nele e apartir dele fosse adicionado normalmente. Porém eu perco o restante, no seu exemplo eu perderia o 18°,19° e o 20° porém na minha aplicação estou perdendo 30mil hehe.
List<AlgumaCoisa> statements = blabla;
for (AlgumaCoisa x : statements) {
try {
executaOStatement(x);
} catch (BatchUpdateException e) { // Ou até mesmo catch (Throwable e)
// Gera um log, ou então ignora a exceção.
}
}