Jdbc-spec có nội dung sau để nói về mã trả lại của cập nhật hàng loạt:
■ 0 hoặc lớn hơn - lệnh đã được xử lý thành công và giá trị là số lượng cập nhật cho biết số hàng trong cơ sở dữ liệu bị ảnh hưởng bởi việc thực thi lệnhChương 14 Cập nhật hàng loạt 121
■ Statement.SUCCESS_NO_INFO - lệnh đã được xử lý thành công, nhưng số hàng bị ảnh hưởng là không xác định
Statement.SUCCESS_NO_INFO được định nghĩa là -2, vì vậy kết quả của bạn cho biết mọi thứ đều hoạt động tốt, nhưng bạn sẽ không nhận được thông tin về số lượng cột được cập nhật.
Tài liệu tiên tri cho biết:
• Đối với một lô câu lệnh đã chuẩn bị, không thể biết số hàng bị ảnh hưởng trong cơ sở dữ liệu bởi từng câu lệnh riêng lẻ trong lô. Do đó, tất cả các phần tử của mảng đều có giá trị là -2. Theo đặc điểm kỹ thuật JDBC 2.0, giá trị -2 cho biết rằng hoạt động đã thành công nhưng số lượng hàng bị ảnh hưởng là không xác định.
• Đối với một lô câu lệnh chung, mảng chứa số lượng cập nhật thực tế cho biết số hàng bị ảnh hưởng bởi mỗi thao tác. Số lượng cập nhật thực tế chỉ có thể được cung cấp trong trường hợp các câu lệnh chung chung trong quá trình triển khai lô tiêu chuẩn của Oracle.
• Đối với lô câu lệnh có thể gọi, máy chủ luôn trả về giá trị 1 làm số lượng cập nhật, bất kể số hàng bị ảnh hưởng bởi mỗi thao tác.
Vì vậy, có vẻ như nếu bạn cần số lượng cập nhật, bạn không thể sử dụng PreparedStatement
s nhưng phải trở lại Statement
đơn giản s.