Partage
  • Partager sur Facebook
  • Partager sur Twitter

[BDD] Exception SQL

Récupérer le dernier identifiant d'une table

Sujet résolu
Anonyme
    20 mars 2010 à 20:17:05

    Tout d'abord, bonjour !

    J'ai fait une requête qui est censée me retourner le dernier identifiant créé pour un enregistrement de la table COMMANDE.

    Mais une exception SQL est levée ici :


    dernierID = ZoneDeTest.DernierIDcommande(conn);


    //SELECT MAX(ID_COM) AS [LAST] FROM COMMANDE; //==> Problème SQL
    dernierID = ZoneDeTest.DernierIDcommande(conn); //==> Fonction éxécutant la requête
    


    Fonction :


    static public String DernierIDcommande(Connection conn) throws SQLException {
    		String ID="";
    		Statement stmt = conn.createStatement();
    		String req = "SELECT MAX(ID_COM) AS [LAST] FROM COMMANDE;";		
    		ResultSet rs = stmt.executeQuery(req);
    		//rs.last();
    		ID = rs.getString("LAST");
    		return ID;
    	}
    


    La SGBD est Access et la base de données est un fichier .mdb
    J'utilise Eclipse comme IDE.

    D'avance je vous remercie sur l'aide que vous pourrez m'apportez et vous adresse mes salutations distinguées.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      20 mars 2010 à 22:17:01

      l'exception dit quoi?
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        20 mars 2010 à 22:49:50

        java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] État de curseur non valide
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          21 mars 2010 à 7:56:07

          tu fais une demande sur un emplacement invalide de la réponse de la requête.

          tu n'es pas obligé d'utiliser la clause AS, max ne renvoie qu'un result, donc le retrouver devrait être assez simple(mais je peux me tromper je nesuis pas familier avec access et les pilotes odbc):

          si ID_COM est bien un entier dans la DB:
          int id = rs.getInt(0);
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            21 mars 2010 à 17:27:36

            Citation : shakhal

            tu fais une demande sur un emplacement invalide de la réponse de la requête.

            tu n'es pas obligé d'utiliser la clause AS, max ne renvoie qu'un result, donc le retrouver devrait être assez simple(mais je peux me tromper je nesuis pas familier avec access et les pilotes odbc):

            si ID_COM est bien un entier dans la DB:
            int id = rs.getInt(0);



            Merci j'ai appris deux trois trucs mais ça ne règle pas le problème SQL.
            Voici le nouveau code de la méthode :

            static public String DernierIDcommande(Connection conn) throws SQLException {
            		String ID="";
            		Statement stmt = conn.createStatement();
            		String req = "SELECT MAX(ID_COM) FROM COMMANDE;";		
            		ResultSet rs = stmt.executeQuery(req);
            		//rs.last();
            		ID = rs.getString(0);
            		return ID;
            	}
            


            Et même en int ça ne marche pas :
            static public int DernierIDcommande(Connection conn) throws SQLException {
            		int ID = 1;
            		Statement stmt = conn.createStatement();
            		String req = "SELECT MAX(ID_COM) FROM COMMANDE;";		
            		ResultSet rs = stmt.executeQuery(req);
            		//rs.last();
            		ID = rs.getInt(0);
            		return ID;
            	}
            
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              21 mars 2010 à 17:50:17

              Désolé j'avais pas vu, faut avancer dans le RS:

              Statement stmt = conn.createStatement();		
              ResultSet rs = stmt.executeQuery("SELECT MAX(ID_COM) FROM COMMANDE;");
              rs.next();
              return rs.getInt(0);
              
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                21 mars 2010 à 20:12:41

                A merci, c'était bien ça mais maintenant c'est ma requête d'ajout qui bat de l'aile :lol:
                J'éditerais en temps voulu.
                EDIT : Ah non c'est bon, j'ai juste vider des champs de texte avant de récupérer leur contenu :p

                Le problème de ce sujet est résolu
                • Partager sur Facebook
                • Partager sur Twitter

                [BDD] Exception SQL

                × 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