Gostaria de executar algumas instruções e confirmar o lote inteiro no final. Eu tentei a seguinte abordagem:
connection.setAutoCommit(false); // Don't commit for each statement
int[] returnCodes = pstmt.executeBatch(); // Execute all statements
connection.setAutoCommit(true); // Back to normal state - future statements
// will be committed instantly
connection.commit(); // Commit our batch
Que falha miseravelmente:
java.sql.SQLException: Can't call commit when autocommit=true
--reference to the line with connection.commit()--
Qual é o caminho certo a seguir? faz connection.setAutoCommit(true)
commit de todas as instruções em lote executadas?
Dos
Connection.setAutoCommit
documentos:Mas não acho que seja muito legível/óbvio no seu código. Você provavelmente deve simplesmente confirmar antes de voltar para o modo de confirmação automática. Deixa a intenção clara.