Tôi đang chèn nhiều bản ghi bằng cách sử dụng chèn hàng loạt JDBC. Có cách nào để lấy khóa được tạo cho mỗi bản ghi không? Tôi có thể sử dụng ps.getGeneratedKeys()
với chèn hàng loạt không?Làm thế nào để có được các khóa được tạo từ chèn hàng loạt JDBC trong Oracle?
Tôi đang sử dụng oracle.jdbc.OracleDriver
final String insert = "Insert into Student(RollNumber, Name, Age) values(StudentSEQ.nextval, ? , ?)";
final int BATCH_SIZE = 998;
int count = 0;
Connection con = null;
PreparedStatement ps = null;
try {
con = getConnection();
ps = con.prepareStatement(insert);
for (Student s : students) {
ps.setString(1, s.getName());
ps.setInt(2, s.getAge());
ps.addBatch();
count++;
if (count % BATCH_SIZE == 0) {
// Insert records in batches
ps.executeBatch();
}
}
// Insert remaining records
ps.executeBatch();
} finally {
if(ps != null)
ps.close();
release(con);
}
Tôi đang nghĩ đến việc sử dụng ps.executeUpdate()
cùng với ps.getGeneratedKeys()
bên trong vòng lặp để có được kết quả mong muốn. Bất kỳ giải pháp nào khác?
Bạn có sử dụng chuỗi trong chèn hàng loạt không? – Rachcha
Có, StudentSEQ là trình tự cho bảng. – atripathi