IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Comparaison resultat ResultSet et une ArrayList


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 115
    Points : 47
    Points
    47
    Par défaut Comparaison resultat ResultSet et une ArrayList
    Hello tout le monde!

    Je souhaite verifier que le contenu d'un ResultSet est exactement le meme que le contenu de mon ArrayList et je rame....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    public static boolean analyseIdentique(int idQuestion, Question uneQuestion){
            boolean resultat = false;
            System.out.println("coucou"+resultat);
            try {
                // Connection à la base de données
                conBD = connexionBD();
                Statement requete = conBD.createStatement();
     
                // Contrôle de l'existance de la question dans la bd avec le format Kern
                ResultSet resultatRequeteListeTypeAnalyse = requete.executeQuery(
                        "SELECT type_analyse.* " +
                        "FROM type_analyse, possession, question " +
                        "WHERE question.id_question = possession.id_question " +
                        "AND possession.id_type_analyse = type_analyse.id_type_analyse " +
                        "AND question.id_question LIKE '"+ idQuestion +"'");
                resultatRequeteListeTypeAnalyse.last();
                //on récupère le numéro de la ligne
                int nombreLignes = resultatRequeteListeTypeAnalyse.getRow();
                //on repace le curseur avant la première ligne
                resultatRequeteListeTypeAnalyse.beforeFirst();
                System.out.println("nombre ligne BD: "+nombreLignes);
                System.out.println("nombre analyse question "+uneQuestion.getTypeAnalyse().size());
                if(nombreLignes==uneQuestion.getTypeAnalyse().size()){
                    for(int i=0;i<uneQuestion.getTypeAnalyse().size();i++){
                        resultatRequeteListeTypeAnalyse.beforeFirst();
                        while(resultatRequeteListeTypeAnalyse.next()||(!resultat)){
                            if(uneQuestion.getTypeAnalyse().get(i).toString().equals(resultatRequeteListeTypeAnalyse.getString("nom_analyse"))){
                                resultat=true;
                            }else{
                                resultat=false;
                            }
                        }
                    }
                }else{
                    resultat=false;
                }
            } catch(Exception e) {
                e.printStackTrace();
            }
            // déconnexion à la base de données
            deconnexionBD(conBD);
            return resultat;
        }
    Je me retrouve avec l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    java.sql.SQLException: After end of result set
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
            at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:698)
            at com.mysql.jdbc.ResultSet.getStringInternal(ResultSet.java:5476)
            at com.mysql.jdbc.ResultSet.getString(ResultSet.java:5420)
            at com.mysql.jdbc.ResultSet.getString(ResultSet.java:5436)
            at dmind.GestionnaireBd.analyseIdentique(GestionnaireBd.java:550)
            at dmind.ProgrammeDmind.main(ProgrammeDmind.java:29)
    Qui correspond à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(uneQuestion.getTypeAnalyse().get(i).toString().equals(resultatRequeteListeTypeAnalyse.getString("nom_analyse"))){
    Le problème vient de mon algo...

    Quelqu'un de charitable pour m'aider??

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 115
    Points : 47
    Points
    47
    Par défaut
    Ouaip, ben je suis vraiment une plaie...
    l'erreur viens simlement du fait que dans le while... je voulais mettre un "et" et jai mis || à la place de &&...

    Désolé...

    bon l'algo ne fonction pas correctement tout de même, donc ma question se transforme en comment effectuer cette comparaison correctement?

    Je vous demande de l'aide parce que je suis vraiment dans la m... avec ce projet..

  3. #3
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Points : 737
    Points
    737
    Par défaut
    Effectivement, ton algo n'est pas bon avec le || remplacé par le &&.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    boolean resultat = false;
    if(nombreLignes==uneQuestion.getTypeAnalyse().size()){
                    for(int i=0;i<uneQuestion.getTypeAnalyse().size();i++){
                        resultatRequeteListeTypeAnalyse.beforeFirst();
                        while(resultatRequeteListeTypeAnalyse.next()&&(!resultat)){
                            if(uneQuestion.getTypeAnalyse().get(i).toString().equals(resultatRequeteListeTypeAnalyse.getString("nom_analyse"))){
                                resultat=true;
                            }else{
                                resultat=false;
                            }
                        }
                    }
                }else{
                    resultat=false;
                }
    Dés que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    uneQuestion.getTypeAnalyse().get(i).toString().equals(resultatRequeteListeTypeAnalyse.getString("nom_analyse"))
    Alors le resultat passe à true et ton test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resultatRequeteListeTypeAnalyse.next()&&(!resultat)
    Passe donc à false. Mais comme aprés tu ne le remet pas resultat sur false, ben le test restera à false pour tout les autres éléments et ton algo se plante!

  4. #4
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Points : 128
    Points
    128
    Par défaut
    Je sais pas si c'est fait exprès mais pourquoi faire 2 boucles ?????
    ceci ne passerais t il pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    resultat = true;
    int i = 0;
    if(nombreLignes==uneQuestion.getTypeAnalyse().size()){
    	while(resultatRequeteListeTypeAnalyse.next() && (resultat)){
    		if(!uneQuestion.getTypeAnalyse().get(i).toString().equals(resultatRequeteListeTypeAnalyse.getString("nom_analyse")))
                                resultat=false;
    		i++;
           	}
    }else
    	reslutat = false;

Discussions similaires

  1. resultat d'une requete SQL dans une ArrayList
    Par zouuc dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 18/02/2009, 10h25
  2. [DEBUTANTE] Pb avec une ArrayList et un Resultset
    Par mariafan dans le forum Collection et Stream
    Réponses: 27
    Dernier message: 09/01/2007, 15h33
  3. Comparaison des éléments d'une ArrayList
    Par Emilie MARQUOIS-OGEZ dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 31/10/2006, 15h17
  4. [LG]résultat renvoyé par une fonction
    Par le 27 dans le forum Langage
    Réponses: 3
    Dernier message: 10/12/2003, 10h31
  5. Resultat requete dans une seule colonne
    Par mathieu--g dans le forum Sybase
    Réponses: 2
    Dernier message: 08/07/2003, 13h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo