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 :

État de curseur non valide


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par défaut État de curseur non valide
    Bonjour,

    Pour remplir une jCombo avec une requête SQL j'ai l'erreur "Etat de curseur non valide".

    J'ai essayé isLast(), isAfterLast() sans succès.

    Quelle est ma bêtise ?
    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
     
     
            try {
                cnxPays = DriverManager.getConnection("jdbc:odbc:Contacts");
            } catch (SQLException e) {
                System.out.println("Connection à la base de données impossible : " + e);
            }
     
            qryPays = "SELECT DISTINCT Pays FROM Contact GROUP BY Pays";
            try {
                Statement smtPays = cnxPays.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                rstPays = smtPays.executeQuery(qryPays);
                while (!rstPays.isLast() && !rstPays.isAfterLast() && rstPays.next()) {
                    cmbPaysContact.addItem(rstPays.getString("Pays"));
                }
                rstPays.close();
            } catch (SQLException e) {
                txtStatus.setText("Anomalie sur la requête SELECT Pays FROM Contact : " + e);
            }

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Es tu obligé de te connecté en ODBC ? A quel base tu te connecte ?

    Effectivement "!rstPays.isLast() && !rstPays.isAfterLast()" ne sert a rien car si tu es sur le dernier enreg le next retourne false et ta boucle s'arrète.

    A tous hasard, essai de faire "rstPays.getString(1)" au lieu de rstPays.getString("Pays")
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par défaut
    Bonjour Alkan,

    Je suis sur une base Access 2007 (.accdb).

    J'ai déjà essayé tout un tas de choses, notamment en récupérant la colonne par son numéro plutôt que par son nom.

    En fait voilà ce que j'ai constaté :

    J'ai une table où il y a 381 contacts. Pour chaque contact j'ai un champs "Pays" et le nombre de pays distincts est de 45.

    Lorsque je fais mon SELECT DISTINCT avec ou sans GROUP BY, tout se passe bien jusqu'à la 45ème ligne. Avec ces 45 pays je remplis une jCombo.

    A partir du 46ème, je suis en erreur sur la colonne Pays. Et dans mon resultset j'ai 381 enregistrements ! Alors que je pensais ne récupérer que 45 lignes.

    Quelque-chose m'échappe.

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Le problème semble venir de Access lui même. Si tu peux changer de base de données, il existe de très bonne base de données embarqué en java.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    Salut tous !

    J'ai eu le même problème; c'est comme si la requête retournait 381 lignes dont seules les 45 premières sont valides...
    Finalement j'ai décidé carrément d'ignorer l'erreur (c'est pas beau, hein ?).

    cri unanime : "Si tu peux changer de base de données...." faut pas hésiter.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par défaut
    Merci pour vos réponses.

    Je vais ignorer l'erreur (même si je n'aime pas trop faire ça !) et envisager de changer de gestionnaire de base de données.

    Oui, mais lequel ? un qui soit fiable et pour qui il existe un outil de conversion avec Access 2007 ?

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. État de curseur non valide
    Par gabay dans le forum JDBC
    Réponses: 1
    Dernier message: 05/05/2009, 17h59
  3. Réponses: 1
    Dernier message: 19/04/2007, 11h44
  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