Duplicate possible:
How to get the insert ID in JDBC?MySQL et Java - Obtenir l'identifiant de la dernière valeur insérée (JDBC)
Salut, je suis en utilisant JDBC pour se connecter sur la base de données à travers Java.
Maintenant, je fais une requête d'insertion, et j'ai besoin d'obtenir l'ID de la dernière valeur insérée (donc, après un stmt.executeUpdate
).
Je n'ai pas besoin de quelque chose comme SELECT id FROM table ORDER BY id DESC LIMIT 1
, parce que je peux avoir des problèmes de concurrence.
J'ai juste besoin de récupérer l'identifiant associé à la dernière insertion (à propos de mon instance de l'instruction).
J'ai essayé, mais il semble ne fonctionne pas sur 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;
}
En fait, chaque fois risultato = -1
, et je reçois java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement().
Comment puis-je résoudre ce problème? Merci :) Stackoverflow Personnes
Voir ma question: http://stackoverflow.com/questions/4224228/preparedstatement-with-statement-return-generated-keys –
Dupliquer de [Comment obtenir l'ID d'insertion dans JDBC?] (Http: // stackoverflow .com/questions/1915166/comment-obtenir-le-insert-id-in-jdbc) – BalusC