Duplicar posibles:
How to get the insert ID in JDBC?MySQL y Java - Obtener ID del último valor insertado (JDBC)
Hola, estoy usando JDBC para conectarse a la base de datos a través hacia fuera de Java.
Ahora, hago algunas consultas de inserción, y necesito obtener la identificación del último valor insertado (por lo tanto, después de un stmt.executeUpdate
).
No necesito algo como SELECT id FROM table ORDER BY id DESC LIMIT 1
, porque puedo tener problemas de simultaneidad.
Solo necesito recuperar la identificación asociada a la última inserción (sobre mi instancia de la Declaración).
He intentado esto, pero parece que no funciona en JDBC:
public Integer insertQueryGetId(String query) {
Integer numero=0;
Integer risultato=-1;
try {
Statement stmt = db.createStatement();
numero = stmt.executeUpdate(query);
ResultSet rs = stmt.getGeneratedKeys();
if (rs.next()){
risultato=rs.getInt(1);
}
rs.close();
stmt.close();
} catch (Exception e) {
e.printStackTrace();
errore = e.getMessage();
risultato=-1;
}
return risultato;
}
De hecho, cada vez que risultato = -1
, y me da java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement().
¿Cómo puedo solucionar este problema? Gracias gente Stackoverflow :)
Consulte mi pregunta: http://stackoverflow.com/questions/4224228/preparedstatement-with-statement-return-generated-keys –
Duplicado de [¿Cómo obtener el ID de inserción en JDBC?] (Http: // stackoverflow .com/questions/1915166/how-to-get-the-insert-id-in-jdbc) – BalusC