Một cái gì đó như thế này sẽ hoạt động:
// tell the driver you want the generated keys
stmt = c.prepareStatement("INSERT ... ", Statement.RETURN_GENERATED_KEYS);
stmt.executeBatch();
// now retrieve the generated keys
ResultSet rs = stmt.getGeneratedKeys();
while (rs.next()) {
int id = rs.getInt(1);
.. save the id somewhere or update the items list
}
Tôi nghĩ (tôi không chắc chắn!) rằng các khóa được trả về theo thứ tự chúng được tạo. Vì vậy, hàng đầu tiên từ ResultSet sẽ ánh xạ đến "mục" đầu tiên từ danh sách bạn đang xử lý. Nhưng hãy xác minh điều đó!
Chỉnh sửa
Nếu điều đó không hiệu quả, hãy thử chỉ định các cột thực tế mà các giá trị được tạo:
stmt = c.prepareStatement("INSERT ... ", new String[] {"id"});