Partage
  • Partager sur Facebook
  • Partager sur Twitter

MySQL et JAVA

clé primaire auto_increment

Sujet résolu
    7 avril 2009 à 9:44:08

    Bonjour a tous,

    Je développe une appli se connectant a une base de données My_SQL. J'utilise la classe mysql_connector-java-5.1.7.
    Je voudrais savoir si il était possible de récupérer la clé primaire auto_increment après un INSERT.

    Voici mon code :

    Citation : code

    requete="INSERT INTO PERSONNE (NOM_PERSONNE, PRENOM_PERSONNE) value ('toto', 'titi');
    Class.forName("com.mysql.jdbc.Driver");
    //Connexion a la base "clients" qui se trouve dans localhost
    conn = DriverManager.getConnection("jdbc:mysql://localhost/" + nomBase,user,passe);
    stmt = conn.createStatement();

    stmt.executeUpdate(requete);
    //ici je voudrais récupérer la valeur de la clé auto_increment ID_PERSONNE

    • Partager sur Facebook
    • Partager sur Twitter
      7 avril 2009 à 10:05:42

      Salut,

      Il y a moyen de récupérer la clé comme çà :
      statement.executeUpdate();
      ResultSet resultat = statement.getGeneratedKeys();
      resultat.next();
      id = resultat.getInt(1);
      


      Les deux dernières lignes sont à mettre dans une boucle si l'insert a inséré plusieurs lignes.

      Pour ce qui est de la doc : executeUpdate et getGeneratedKeys

      Dans mon code (sur mysql aussi mais pas avec la même version de drivers), ça marchait avec le executeUpdate() simple (mais j'utilisais de PrepearedStatement), donc il faudrait tester chez toi pour voir si tu dois ajouter le deuxième argument (flag) ou pas.

      A+.
      • Partager sur Facebook
      • Partager sur Twitter

      "'But I don't want to go among mad people,' said Alice. 'Oh, you can't help that,' said the cat. 'We're all mad here.'" Lewis Carroll

        7 avril 2009 à 10:10:02

        merci misterdi, cela marche comme sur des roulettes ;-)
        • Partager sur Facebook
        • Partager sur Twitter
          22 juillet 2015 à 17:36:30

          try{
                              PreparedStatement p=con.prepareStatement("insert into compte(solde,datecreation) values(?,?)",Statement.RETURN_GENERATED_KEYS);
                              p.setLong(1,compte.getSolde());
                              p.setDate(2,sDate);
                              p.executeUpdate();
                              // recuperation du numero genere
                               Statement statement2 = con.createStatement();
                              ResultSet rs = statement2.getGeneratedKeys();
                               if (rs != null) {
                                    // on récupère l'id généré
                                    solde = rs.getInt(1);
                                    System.out.println("votre compte a été crée avec succès : " +solde);
                               }
                               else{
                                   System.out.println("votre compte else a été crée avec succès : " +solde);
                               }
                          }
                      catch(SQLException s){
                          s.printStackTrace();
                          }   
                      }

          voilà mon code mais ça genere une erreur SQL je sais pas pour quoi merci

          • Partager sur Facebook
          • Partager sur Twitter
            27 juillet 2015 à 11:16:21

            try{
              topic.poster(msgIncomprehensible);
            }catch(DeterrageTopicException e){
              System.out.println("Ne plus déterrer les messages d'y a 6 ans svp");
            }

            -
            Edité par arno21 27 juillet 2015 à 11:18:39

            • Partager sur Facebook
            • Partager sur Twitter

            Mon projet: SpotRoom. N'hésites pas à passer dire ce que tu en penses !

            MySQL et JAVA

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown