OVH Cloud OVH Cloud

JDBC clef primaire

11 réponses
Avatar
Julien Arlandis
J'aimerais récupérer le numéro_auto de la clef primaire généré après un
enregistrement.
J'utilise une base de données Mysql, j'ai essayé les méthodes
getGeneratedKeys(), mais sans succés.

1 réponse

1 2
Avatar
Adobex
Oui, attention d'ailleurs, le rs.next() doit être testé en réalité car il
renvoie un booléen indiquant si la ligne sur laquelle il se positionne est
valide ou non. Tu risques l'exception si tu ne le testes pas...

donc

if (rs.next() == true)
{
rs.getInt(1);
}

Dans mon code je l'avais omis car en fait, un insert, si jamais il ne
fonctionne pas, une exception sera interceptée (par le catch obligatoire) et
donc le reste de l'opération ne sera pas fait. En revanche, si l'insertion
fonctionne correctement, il y aura forcément une ligne valide dans le
recorset donc le rs.next() doit renvoyer 'true' obligatoirement et donc il
me semble inutile de le tester dans ce cas précis.


"Julien Arlandis" a écrit dans le message de
news:401e8648$0$11233$
Bon je pense que tu auras vu ma réponse (qui fonctionne) dans l'autre
branche de ce thread mais je réponds ici à ta question concernant le
ResultSet retourné. Ben en fait, c'est comme ça que c'est géré, c'est
tout.


Donc, effectivement tu traite le retour de la méthode comme si tu avais
fait


un SELECT. Un ResultSet est un objet comme un autre, si une méthode te
dit


qu'elle renvoie ça, hé bien tu fais avec ;).

Au passage, dans le même ordre d'idée, si tu te demandes comment faire
pour


obtenir le résultat d'une requête du style "SELECT COUNT(*) FROM
matable"


(puisqu'on ne spécifie pas de nom de colonne), la réponse est que la
valeur


est récupérée avec un rs.getInt(1) après un rs.next()

Ca t'éclaire? :)


Oui, en fait ce qui m'a dérouté c'est l'histoire du rs.next(),
quand j'utilisais des recordsets en ASP je crois me souvenir qu'il se
plaçait directement sur la première ligne de la requête.
Par contre il fallait vérifier qu'on n'était pas à la fin du recordset
avant d'appeller rs.Getbidule.

Adobex





1 2