Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2743 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [java+mysql] Récupérer lvaleur d'un champ auto incrément après insert

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java+mysql] Récupérer lvaleur d'un champ auto incrément après insert

n°273280
belgique
Posté le 19-12-2002 à 19:19:50  profilanswer
 

Voilsà, j'ai une colonne id par exemple qui est de type auto incrément et j'ajoute une ligne à cette table, puis je connaitre directement la valeur de l'id du champ ajouté.


---------------
Belgian connection
mood
Publicité
Posté le 19-12-2002 à 19:19:50  profilanswer
 

n°273282
drasche
Posté le 19-12-2002 à 19:20:43  profilanswer
 

SELECT @@IDENTITY;
 
fais une recherche là dessus pour plus d'infos ;)

n°273295
belgique
Posté le 19-12-2002 à 19:32:07  profilanswer
 

Code :
  1. r=s.executeQuery("Insert into Employe (nom) Values ('test');SELECT @@IDENTITY as nummatricule" );
  2.   if(r.next())
  3.                  {
  4.                  System.out.println (r.getInt(1));
  5.                  }


 
Merci, c'est une truc du genre pcq ça marche pas trop ça :/


---------------
Belgian connection
n°273368
Rob Roy
Posté le 19-12-2002 à 20:48:24  profilanswer
 

execute le select@@identity juste apres

n°273383
belgique
Posté le 19-12-2002 à 21:05:03  profilanswer
 

ça marche pas ... :(

Code :
  1. r=s.executeQuery("Insert into Employe (nom) Values ('test')" );
  2. r=s.executeQuery("SELECT @@IDENTITY as nummatricule" );


 
exceptionjava.sql.SQLException: Syntax error or access violation: You have an er
ror in your SQL syntax near '@IDENTITY as nummatricule' at line 1
 
ça marche avec un seul  @ mais ça renvoie 0 :/


---------------
Belgian connection
n°273403
Rob Roy
Posté le 19-12-2002 à 22:11:49  profilanswer
 

ou a tu vu qu'il y avait un numatricule ?

n°273427
belgique
Posté le 19-12-2002 à 23:01:05  profilanswer
 

c'est le nom du champ auto incrémenté ça , sinon  

Code :
  1. r=s.executeQuery("Insert into Employe (nom) Values ('test')" );
  2. r=s.executeQuery("SELECT @@IDENTITY" );


ne va pas plus, il y a une erreur dans la requête :/


---------------
Belgian connection
n°273436
Rob Roy
Posté le 19-12-2002 à 23:13:14  profilanswer
 

essaille avec un ";" à la fin
sinon essaille ton
SELECT @@IDENTITY as nummatricule
en mettant ' ' pour 'nummatricule'
 
OU SINON CHERCHE SUR LE NET CA SE TROUVE TRES FACILEMENT !

n°273463
--greg--
Posté le 20-12-2002 à 00:13:19  profilanswer
 

:heink: j'ai comme un GROS doute qu'il y ait un truc pareil dans mysql
 
et euh avant de faire ça, essaie dejà de faire ton insert correctement, mais bon...
 
avec jdbc3, y'a une fonction pour recuperer exactement ça... et les derniers drivers jdbc de mysql l'implementent  :hello:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°273472
belgique
Posté le 20-12-2002 à 00:26:56  profilanswer
 

mon insert marche ;) . Enfin c'est peut être dégeux :D. Tant pis pour la valeur du champ. :(


---------------
Belgian connection
mood
Publicité
Posté le 20-12-2002 à 00:26:56  profilanswer
 

n°275064
darklord
You're welcome
Posté le 23-12-2002 à 11:23:41  profilanswer
 

bon concrètement, il faut faire quoi? Ca fonctionne ce select @@IDENTITY ou pas?


---------------
Just because you feel good does not make you right
n°275148
drasche
Posté le 23-12-2002 à 13:55:49  profilanswer
 

le select @@identity fonctionne sur MySQL 3.23.xx (je m'en sers sur un projet).
 
Je sais pas comment ça va avec Java mais peux-tu essayer sans ton "as matricule" et essayer de récupérer la valeur sans cela? (et mettre un ; à la fin comme l'a dit Rob Roy, ça peut pas faire de mal ;))

n°275149
darklord
You're welcome
Posté le 23-12-2002 à 13:57:03  profilanswer
 

drasche a écrit :

le select @@identity fonctionne sur MySQL 3.23.xx (je m'en sers sur un projet).
 
Je sais pas comment ça va avec Java mais peux-tu essayer sans ton "as matricule" et essayer de récupérer la valeur sans cela? (et mettre un ; à la fin comme l'a dit Rob Roy, ça peut pas faire de mal ;))


 
en fait je fais mon insert et puis avec la meme connection juste après je fais
 

Citation :


select last_insert_id() as id


 
et comme je ne partage pas cette connexion je n'ai pas  besoin de locker la table
 
:hello:


---------------
Just because you feel good does not make you right
n°275164
darklord
You're welcome
Posté le 23-12-2002 à 14:17:26  profilanswer
 

bon ce code fonctionne très bien sur ma base MySQL sur mon laptopt. Par contre le meme code sous linux avec le meme mysql ca ne fait rien (ca n'insère meme pas en base). Je crois que j'ai raté un épisode :(


---------------
Just because you feel good does not make you right
n°275165
darklord
You're welcome
Posté le 23-12-2002 à 14:17:50  profilanswer
 

DarkLord a écrit :

bon ce code fonctionne très bien sur ma base MySQL sur mon laptopt. Par contre le meme code sous linux avec la meme version de mysql mais sous linux, ca ne fait rien (ca n'insère meme pas en base). Je crois que j'ai raté un épisode :(


---------------
Just because you feel good does not make you right
n°275178
Dephi
Posté le 23-12-2002 à 14:38:12  profilanswer
 

synchronized {
   ajout ligne
   getLastId (==> SELECT MAX(id) FROM)
}
 
 
Connaissais pas le coup du @@IDENTITY
Ca marche vraiment alors ou pas????
 
 
 
 
 
 
 


---------------

n°275193
darklord
You're welcome
Posté le 23-12-2002 à 15:20:52  profilanswer
 

Dephi a écrit :

synchronized {
   ajout ligne
   getLastId (==> SELECT MAX(id) FROM)
}
 
 
Connaissais pas le coup du @@IDENTITY
Ca marche vraiment alors ou pas????
 
 
 
 
 
 
 
 


 
ouais enfin voir ma query plus haut ... Sous mysql 3.5 ca fonctionne


---------------
Just because you feel good does not make you right
n°275196
belgique
Posté le 23-12-2002 à 15:29:59  profilanswer
 

pas bête du tout le coup du synchronized ;). Enfin mon projet est rendu et ils ont rien regardé :(. Enfin, à l'avenir faute de miux, je prendrai la méthode synchronized. Sous php/mysql, il y a une fonction qui renvoie l'id du dernier truc inséré.


---------------
Belgian connection
n°275197
darklord
You're welcome
Posté le 23-12-2002 à 15:34:46  profilanswer
 

belgique a écrit :

pas bête du tout le coup du synchronized ;). Enfin mon projet est rendu et ils ont rien regardé :(. Enfin, à l'avenir faute de miux, je prendrai la méthode synchronized. Sous php/mysql, il y a une fonction qui renvoie l'id du dernier truc inséré.


 
si tu partages pas la connexion entre plusieurs thread c'est pas nécessaire, la fuction last_insert_id fait un lock automatiquement sur la base...


---------------
Just because you feel good does not make you right

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [java+mysql] Récupérer lvaleur d'un champ auto incrément après insert

 

Sujets relatifs
[Mysql] limite par defaut d'une connexion a la base ?[MySQL] Faire un rand sur une requete SQL...
problème de comparaison de date (mysql).Limiter la taille d'un champ texte, je deviens fou
[Applet JAVA] Problème de thread qui ne rend pas la mainMysql et les sous-requêtes...
[Servlet] Récupérer un paramètre avec a href[Java] Chat en UDP
Bonjour tt le monde! MySQL... BDD relationnelle ou pas?creer un arbre XML a partir d'une base oracle en java
Plus de sujets relatifs à : [java+mysql] Récupérer lvaleur d'un champ auto incrément après insert


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR