Bạn nói rằng bạn đang thực thi hàng loạt câu lệnh SQL, vì vậy tôi giả sử rằng bạn đang sử dụng executeBatch
. Khi bạn executeBatch
một loạt các câu lệnh, một số câu lệnh có thể thành công và một số câu lệnh có thể thất bại. Nếu một câu lệnh không thành công, điều đó không có nghĩa là trình điều khiển JDBC sẽ khôi phục các câu lệnh đã thành công. Trình điều khiển JDBC có thể chọn cố gắng thực thi tất cả các câu lệnh trong lô nếu một câu lệnh không thành công hoặc nó có thể chọn ngừng thực thi các câu lệnh trong lô khi một câu lệnh không thành công (có vẻ như trình điều khiển bạn đang sử dụng chọn ngừng thực thi các câu lệnh như ngay khi có sự cố).
Khi một câu lệnh trong một lô không thành công, bạn sẽ nhận được BatchUpdateException
. Trong trình xử lý ngoại lệ, bạn cần gọi getUpdateCounts
. Điều đó sẽ cung cấp cho bạn một mảng int
điều đó cho bạn biết câu lệnh đã cập nhật bao nhiêu hàng, một Statement.SUCCESS_NO_INFO
cho biết câu lệnh đã thành công nhưng không có số hàng hoặc Statement.EXECUTE_FAILED
chỉ ra rằng câu lệnh không thành công. Nếu 99 câu lệnh đầu tiên thành công, câu lệnh thứ 100 tạo ra lỗi và các câu lệnh còn lại không được thực thi, bạn sẽ lấy lại mảng 100 phần tử trong đó 99 phần tử đầu tiên cho biết thành công và phần tử thứ 100 chỉ ra Statement.EXECUTE_FAILED . Sau đó, mã của bạn sẽ cần phải thử lại những câu lệnh chưa được thực thi (trong trường hợp này là câu lệnh 101-1000).