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 :

Pb de resultSet (la compil marche mais pas l'execution)


Sujet :

JDBC Java

  1. #1
    Membre régulier Avatar de legillou
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 178
    Points : 93
    Points
    93
    Par défaut Pb de resultSet (la compil marche mais pas l'execution)
    bonjour a tous!!

    je suis sur un programme java qui doit acceder a une bdd ACCESS et j'ai des problèmes au niveau d'un resultSet. Je vous présente tout d'abord le code et je l'ai commenté au fur et a mesure pour que vous compreniez ou ce situe mon problème. Le compilateur ne me sort aucune erreur, c'est au moment de l'execution que ca foire. Mes requetes sont censées etre bonnes je les ai testées avec ACCESS

    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
    44
    45
    46
    47
    48
    49
    50
    51
     
    private String[][] tabReponses = new String[5][2];   
            public panelgraphique() 
            {  
                String reponsesTotales = null;
                String nombreString;
                int nombreReponses;
                int j = 0;
     
                try
                { 
                // On se connecte à la base Sondage
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection connexion = DriverManager.getConnection("jdbc:odbc:Sondage","","");
     
                // On récupère les données voulues
                Statement result = connexion.createStatement();
                result.executeQuery("SELECT reponse1 FROM Reponses GROUP BY reponse1");
                ResultSet reponsesPossibles = result.getResultSet();
                //jusque la ca fonctionne
                ResultSet reponses;
                while(reponsesPossibles.next())
                {
                	//il rentre bien dans le while puisqu'il m'affiche bien le premier "toto"
                    System.out.println("toto");
                    tabReponses[j][0]=reponsesPossibles.getString("reponse1");
                    System.out.println(tabReponses[j][0]);
                    // j'ai vérifié la valeur dans mon tableau est la bonne
                    result.executeQuery("SELECT reponse1 FROM Reponses WHERE reponse1 = '"+tabReponses[j][0]+"'");
                    System.out.println("SELECT reponse1 FROM Reponses WHERE reponse1 = '"+tabReponses[j][0]+"'");
                    // je vérifie ici la requete que j'ai envoyé et elle est correcte
                    reponses = result.getResultSet();
                    System.out.println("toto12");
                    // il m'affiche bien toto12 donc le getResultSet ne provoque pas d'erreur mais j'ai un doute sur lui
                    reponses.beforeFirst();
                    System.out.println("toto13");
                    // a cet endroit il est deja sorti de la boucle while et il me recupère une erreur dans la catch.
                    // il ne m'affiche pas toto 13. En fait a chaque fois que j'essaye d'utiliser mon resultSet reponses il me balance une erreur
                    System.out.println(reponses.getString("reponse1"));
                    reponses.last();
                    //on récupère le numéro de la ligne
                    nombreReponses = reponses.getRow();               
                    nombreString = String.valueOf(nombreReponses);
                    //on repace le curseur avant la première ligne
                    reponses.beforeFirst();
                    tabReponses[j][1] = nombreString;
                    j++;
                }
     
           }
           catch (Exception e) {System.err.println("ERREUR");}
    Si vous pouviez me trouver mon erreur ca m'oterais une grosse epine du pied...
    Merci d'avance !!
    Gillou

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Et si tu affichais l'Exception que tu recois au lieu d'afficher "ERREUR", tu en saurais un peu plus sur ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           catch (Exception e) {e.printStackTrace();}
    a++

  3. #3
    Membre régulier Avatar de legillou
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    quand je lui met ce que tu me di il me renvoie ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    toto
    A
    SELECT reponse1 FROM Reponses WHERE reponse1 = 'A'
    toto12
    java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY
    	at sun.jdbc.odbc.JdbcOdbcResultSet.beforeFirst(Unknown Source)
    	at Graphique.panelgraphique.<init>(panelgraphique.java:49)
    	at Graphique.framegraphique.<init>(framegraphique.java:34)
    	at sondage.main(sondage.java:12)
    seulement je ne comprend rien

    et si j'enlève le reponses.beforefirst() (qui ne sert a rien...) et que je met mon affiche toto 13 apres cette ligne la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(reponses.getString("reponse1"));
    il me met l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    toto
    A
    SELECT reponse1 FROM Reponses WHERE reponse1 = 'A'
    toto12
    java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] État de curseur non valide
    	at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
    	at Graphique.panelgraphique.<init>(panelgraphique.java:53)
    	at Graphique.framegraphique.<init>(framegraphique.java:34)
    	at sondage.main(sondage.java:12)
    si vous aviez une petite idée...

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par legillou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY
    Cela signifie simplement que le curseur ne peut être parcouru que dans un sens avec la méthode next(), et l'utilisation de toutes autres méthodes de déplacement (comme beforeFirst() ou last() ) provoque une Exception...

    Citation Envoyé par legillou
    et si j'enlève le reponses.beforefirst() (qui ne sert a rien...) et que je met mon affiche toto 13 apres cette ligne la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(reponses.getString("reponse1"));
    C'est normal car lorsque tu récupère le ResultSet il n'est positionné sur aucune ligne, et il faut au minimum faire un next() avant de récupérer des données...

    En général la récupération des données est effectué dans une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while (reponses.next()) {
    	System.out.println(reponses.getString("reponse1"));
    }
    a++

  5. #5
    Membre régulier Avatar de legillou
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    wahouuuuuuuuuuu
    j'étais bloqué la dessus depuis un temps fou
    je te remercie infiniment c'est génial
    a bientot pour un nouveau problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Avec Alert() ca marche mais pas sans
    Par vodnok dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/12/2006, 23h43
  2. net send marche, mais pas ping...
    Par rvfranck dans le forum Administration
    Réponses: 7
    Dernier message: 04/02/2006, 22h09
  3. Code qui marche, mais pas la mise à jour
    Par Cablan dans le forum Access
    Réponses: 7
    Dernier message: 24/10/2005, 17h09
  4. Script qui marche mais pas elegant[newbie]
    Par billybob2006 dans le forum Langage
    Réponses: 4
    Dernier message: 21/10/2005, 12h25
  5. [PL/SQL] requete qui marche mais pas dans un cursor
    Par victor.ward dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/09/2005, 22h21

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