2010-07-13 5 views
2

J'ai une table qui contient une colonne appelée 'id' qui est un INT qui s'incrémente automatiquement et qui est la clé primaire.Java: requête MySQL. Get generated ID

Je dois obtenir la valeur de l'ID généré après l'exécution de la requête. Je donne les résultats suivants:

String sql = "INSERT..."; 
Statement statement = sqlConnection.createStatement(); 
    int result = statement.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); 
    this.id = statement.getGeneratedKeys().getInt("id"); 

-je obtenir l'exception suivante sur la dernière ligne de code:

javax.servlet.ServletException: java.sql.SQLException: Column 'id' not found. 
    com.joelj.music.rest.NewUser.doPost(NewUser.java:44) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
    com.joelj.music.rest.filters.Prefilter.doFilter(Prefilter.java:44) 

Si je change à statement.getGeneratedKeys().getInt(0); j'obtiens ce qui suit:

javax.servlet.ServletException: java.sql.SQLException: Before start of result set 
    com.joelj.music.rest.NewUser.doPost(NewUser.java:44) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
    com.joelj.music.rest.filters.Prefilter.doFilter(Prefilter.java:44) 

I 'ai traversé les autres méthodes et j'ai essayé ceci et cela. J'ai regardé un exemple de code trouvé sur internet. Je ne peux pas voir ce que je fais mal.

Remarque: La requête est exécutée dans les deux solutions que j'ai incluses. Donc, la connexion fonctionne bien. Il récupère la valeur de l'ID qui ne fonctionne pas.

Merci pour l'aide.

Répondre

1

Avez-vous essayé d'utiliser statement.getGeneratedKeys(). GetInt (1)? Le jeu de résultats est basé sur un.

+0

Cela ne fonctionne pas. Me donne la même exception que d'utiliser un 0. – Joel

+0

Ahh, vous avez un deuxième problème, vérifiez ceci: http://stackoverflow.com/questions/2120255/java-resultset-exception-before-start-of-result-set – Michael

+0

a dû appeler '.next()' sur le jeu de résultats avant d'appeler '.getInt (1)'. Impressionnant. Merci Michael – Joel