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 :

[JDBC][SQLException] Etat de curseur non valide


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Par défaut [JDBC][SQLException] Etat de curseur non valide
    Bonjour tout le monde, j'ai un problème avec une application que je suis en train de dévelloper et j'en ai marre de ne pas trouver donc je vous demande de m'aider... voici le code (le pb est exposé à la fin) :

    Nous nous trouvons dans un actionPerformed...

    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
    else if (e.getSource() == boutonSuivant)
                    {
                        try
                        {
                            st = c.getConnection().createStatement();
                            /*rep2 = st.executeQuery("select count(num) as SOMME from Personne"); 
                            rep2.next(); 
                            int ent  = rep2.getInt("SOMME"); 
                             
                            System.out.println(ent);*/
     
                            if(i<5)
                            {
                                i++;
                                j=0;
                            }
     
                            rep = st.executeQuery("select * from Personne");
     
                            while (j<i)
                            {
                                rep.next();
                                j++;
                            }
     
                            textNumPersonne.setText(String.valueOf(rep.getInt(1)));
                            textNomPersonne.setText(rep.getString(2));
                            textPrenomPersonne.setText(rep.getString(3));
                            textAge.setText(String.valueOf(rep.getInt(4)));
                            textAdresse.setText(rep.getString(5));
                            textNumTel.setText(rep.getString(6));
     
                        }
                        catch (SQLException e2) 
                        { 
                                System.out.println("Erreur de suivant"); 
                                e2.printStackTrace(); 
                        }         
                    }
    le msg d'erreur relatif à l'exception s'affiche à chaque passage dans ce code... voici ce que le compilateur me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur de suivant
    java.sql.SQLException:  [Microsoft][Gestionnaire de pilotes ODBC] Etat de curseur non valide
    merci d'avance

    [ Modéré par Viena ]
    Ajout d'un tag et modification du titre : Pour la compréhension de tous, utilisez un titre clair et les tags ! merci.

    Les Règles du Forum

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Ca n'a peut-être rien à voir avec ton pb, mais faire un "select *" et derrière des get...(1), c'est pas top, car le * ne te donne aucune garantie sur sur l'ordre dans lequel sont récupérées les colonnes de la table. Utilise plutôt get...("nom_colonne") ou faire une requête explicite sur les colonnes (select colonne1, colonne2, ...).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Par défaut
    ben en fait ce qui est bizarre c'est que ma requête fonctionne bien.... c'est juste que j'ai quand même une erreur

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Normalement, pour récupérer les données de la table Personne, il faut faire quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        rep = st.executeQuery("select * from Personne"); 
        while (rep.next()) 
        { 
        int num = rep.getInt("num") ;
        String nom = rep.getString("nom") ;
        ...
        }
    A adapter à ton cas.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Par défaut
    ok mais en faisant ça je vais parcourir chaque ligne de ma table non?? moi je veux juste une ligne ...

  6. #6
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Si tu veux récupérer une seule ligne, je ne comprends pas pourquoi tu codes un "select * from Personne" qui te ramènes automatiquement toutes les lignes de la table Personne.
    Il faudrait que tu rajoutes une clause where pour récupérer la ligne qui t'intéresse et remplacer le while ( rep.next() ) par if ( rep.next() ).

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Par défaut
    ben je veux récupérer toutes les colonnes d'une ligne en fait...

  8. #8
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    J'ai bien compris que tu voulais toutes les colonnes puisque tu as codé un select * mais tu es bien d'accord que pour récupérer une seule ligne, il faut coder une clause where.
    Sans clause where, tu auras obligatoirement toutes les lignes de la table.

Discussions similaires

  1. [JDBC-ODBC] Etat de curseur non valide
    Par I o dans le forum JDBC
    Réponses: 7
    Dernier message: 04/05/2015, 12h22
  2. Procédure stockée - Etat du curseur non valide
    Par carribean dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/11/2008, 14h57
  3. Etat de curseur non valide
    Par chti_juanito dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/01/2006, 13h33
  4. [JDBC] état de curseur non valide ?
    Par Hydre dans le forum JDBC
    Réponses: 9
    Dernier message: 03/10/2005, 14h03
  5. [JSP] Erreur Etat de curseur non valide
    Par logica dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/05/2005, 14h42

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