Sto inserendo molti record utilizzando gli inserimenti batch JDBC. C'è un modo per ottenere la chiave generata per ogni record? Posso utilizzare ps.getGeneratedKeys()
con inserti batch?Come ottenere le chiavi generate dall'inserimento batch JDBC in Oracle?
Sto usando 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);
}
Sto pensando di utilizzare ps.executeUpdate()
insieme ps.getGeneratedKeys()
all'interno del ciclo per ottenere il risultato desiderato. Qualche altra soluzione?
Usi le sequenze negli inserti batch? – Rachcha
Sì, StudentSEQ è la sequenza per la tabella. – atripathi