(jdbc) récupérer la valeur auto-increment avec sql server

récupérer la valeur auto-increment avec sql server (jdbc) - Java - Programmation

Marsh Posté le 23-02-2004 à 11:38:53    

Bonjour,  
je dois récupérer la valeur de la clé auto-générée après un insert mais j'ai beau utiliser select @@IDENTITY ou select SCOPE_IDENTITY(), le result set que je reçois en retour ne comporte pas de valeur (--> null).

Code :
  1. theQuery.append("insert into customer (name) values ('dupont')\nselect @@IDENTITY" );
  2. ResultSet data = theStatement.executeQuery(theQuery)(theQuery.toString(),"dataID",connectionPool,DataConnectionSQL.RESULTSET);
  3. if (data != null){
  4.      data.next();
  5.      education_ID = (String)data.getObject(1);
  6.      //Test
  7.      System.out.println("education_ID : "+education_ID+"\n" );
  8.      //fin test
  9.      return ((Integer)data.getObject(1)).intValue();
  10. }


alors que quand je fais le test avec le query analyzer de ms sql server, pas de problème.
serait-ce un problème de driver jdbc (supporte version 1.3 de j2sdk) mais cela me semble bizarre.
Ou bien est-ce simplement une erreur dans la récupération des données ?
merci :)

Reply

Marsh Posté le 23-02-2004 à 11:38:53   

Reply

Marsh Posté le 23-02-2004 à 12:31:52    

avec JDBC3 et un driver compliant, y'a une methode de Connection qui te permet de récuperer ça.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 23-02-2004 à 12:36:45    

enfin, je croyais. je retrouve pas ça dans la javadoc de la jdk1.4 :heink:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 23-02-2004 à 12:52:09    

yep, normalement avec le jdk1.4, il y a la méthode executeUpdate(String, int) qui permet de demander de renvoyer la valeur des auto-generated keys mais le driver jdbc pour sql server ne reconnaît pas cette méthode car elle n'existe pas dans le 1.3

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed