Problema com executeBatch()

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.

sephct,

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.

Quis dizer, conn.setAutoCommit(true).

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.

Dá para fazer algo assim:

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.
    }
}

Pronto. :smiley: