8
votes

Obtenir l'index des lignes insérées d'une base de données MySQL

J'utilise Java (JDBC) pour interagir avec une base de données MySQL. J'ai une table avec un index primaire qui est incrémentation automatique. Lorsque j'insère une ligne, j'ai besoin d'obtenir l'index qu'il vient de recevoir. Comment puis-je faire ça?


3 commentaires

Comment pouvez-vous utiliser cet index pour rechercher plus de laster plus rapide?


@David: Que voulez-vous dire? Une clé primaire est toujours un index et vous aidera donc toujours à rechercher plus rapidement, si vous interrogez l'index. Demandez une question distincte si vous voulez plus d'explications :)


Je pensais qu'une clé primaire pourrait être indexée et non un indice en soi. Je crois que c'est parfaitement valide (bien que l'on ne soit généralement pas recommandé) d'utiliser un Varchar (60) comme clé primaire. Il serait alors intéressant de récupérer l'indice de la clé primaire qui a été inséré et non la valeur elle-même. Plus spécifiquement, il serait utile d'obtenir une sorte de position sur le disque sur lequel le dernier enregistrement a été enregistré afin que l'on puisse la modifier rapidement s'il s'avère qu'il doit être modifié (par exemple en raison de l'utilisateur en cliquant sur un bouton d'annulation) . J'espère que je ne suis pas détourner ce standing maintenant ...


3 Réponses :



0
votes

Alternativement, en utilisant le ressort JDBC, il ressemblerait à:

 Map<String, Object> map = new HashMap<String, Object>();
 map.put("column1", "test");
 map.put("column2", Boolean.TRUE);

 SimpleJdbcInsert insert = new SimpleJdbcInsert(template).withTableName("table").usingGeneratedKeyColumns("id");
 int id = insert.executeAndReturnKey(map).intValue();


0 commentaires

3
votes

Merci à John Boker pour son excellente réponse.

Si vous souhaitez utiliser un PRÊTSTATIMENT , vous pouvez toujours utiliser retour_generated_keys , mais vous devez appliquer les commandes différemment: xxx

  1. ajoutez le retour_generated_keys param dans la préparation () fonction.
  2. Obtenir des résultats non à partir de énoncé.executeUpdate () mais de relève.getGeneratedKeys () .

0 commentaires