Ho una domanda come segue:Impossibile trovare una chiave generata in Java utilizzando getGeneratedKeys di PreparedStatement()
String SQL = "insert into table (id, name) values (sequence.nextval, ?)";
ho poi fare un PreparedStatement come questo:
//initiate connection, statement etc
pStatement = connection.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);
pStatement.setString(1,'blabla');
pStatement.executeUpdate();
ResultSet rs = pStatement.getGeneratedKeys();
while (rs.next()){
//debugging here to see what rs has
}
Durante l'esecuzione e il debug a quel punto di debug, vedo che il mio ResultSet ha solo una chiave, una stringa - non come l'ID che mi aspetto affatto. Quando si controlla il database, tutto funziona correttamente, l'ID viene inserito e tutto. C'è qualcosa in getGeneratedKeys(); questo mi confonde.
Cosa sto sbagliando?
Grazie in anticipo
Non si sta utilizzando 'chiavi generate', si sono solo utilizzando un generatore nella vostra INSERT dichiarazione. 'getGeneratedKeys()' è usato per restituire le chiavi generate dal DB come parte di INSERT (da una colonna Identity o attraverso un trigger). –