2009-05-22 9 views
2

addBatch이 추가 된 배치 문이 많은 java.sql.Statement이 있습니다. executeBatch을 실행하면 데이터베이스 제한을 위반하는 첫 번째 명령문 이후에 BatchUpdateException이 반환되고 나머지 모든 명령문은 일괄 적으로 실행되지 않습니다. 잘못된 문장을 무시하고 모든 문장을 일괄 적으로 실행할 수있는 방법이 있습니까?모든 잘못된 문장을 무시하고 JDBC executeBatch에서 좋은 문장을 모두 실행하는 방법은 무엇입니까?

답변

2

더 나은 해결책은 오류를 수정하는 것입니다. 뭐가 문제 야? SQL? 밑에있는 테이블들? 자료?

예외는 "예외적"이라고 가정합니다. 어떤 상황이 너무 일반적이어서이 배치로 더 자주 볼 가능성이 있습니까?

예외는 뭔가 잘못되었다는 것을 알려줍니다. 나는 당신이 메시지를 무시할 수있는 수정을 추천하고 싶지 않을 것이다. 예외가 발생하면 catch 블록에서 근본 문제를 개선 할 수있는 기회가 있음을 의미합니다.

일괄 처리의 각 문을 반복 할 경우 개별적으로 예외를 catch하고 오류를 기록하기 만하면됩니다. 완전히 무시하지 마세요.

하지만 다른 복구 전략을 생각할 수 없다면 운이 없어집니다.

0

잘 삽입 할 수있는 모든 데이터를 저장하려면 커밋을 실행하고 저장해야합니다.

일괄 처리의 각 문을 반복 할 수 없습니다. 일괄 처리를 호출 할 때만 예외 (각 문 (addbatch))가 아닌 예외가 발생하므로 오류가 발생한 위치를 정확하게 찾을 수 없습니다. 그 중 일부를 저장할 수도 있고 아무 것도하지 않을 수도 있습니다 (커밋 또는 롤백).

관련 문제