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] état de curseur non valide ?


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Points : 44
    Points
    44
    Par défaut [JDBC] état de curseur non valide ?
    je ne comprends pas ce que signifie cette erreur :o
    [Microsoft][Gestionnaire de pilotes ODBC] État de curseur non valide, code: 0, State: 24000

  2. #2
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Points : 44
    Points
    44
    Par défaut
    voila le code ou ca bug
    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
      public void propertyChange(PropertyChangeEvent e) {
        DateButton db = (DateButton) e.getSource();
        if (db == startDateButton) {
     
          startDate = db.getDate();
          System.out.print("Start date changed: ");
     
        }
        else {
     
          System.out.print("End date changed: ");
          endDate = db.getDate();
        }
        System.out.println(db.getDate());
        abonnement = new Abonnement(startDate, endDate);
        requetesAbonnement.insertAbonnement(abonnement);
      }

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requetesAbonnement.insertAbonnement(abonnement);
    A priori, avec une erreur pilote ODBC, c'est sur un probleme de requete que ca se passe...

    A mon avis, ca doit se passer au niveau de cette ligne, je vois pas ou tu pourrais faire intervenir une base de données ailleurs...

    Maintenant, tu fais quoi dans ton requetesAbonnement ?

    Ta connexion est proprement ouverte ?

  4. #4
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Points : 44
    Points
    44
    Par défaut
    requetesAbonnements est mon objet qui contient les requetes pour les abonnements

  5. #5
    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 Hydre
    requetesAbonnements est mon objet qui contient les requetes pour les abonnements
    Justement : ton erreur viens de la base de données, donc l'erreur doit provenir d'une de tes méthodes qui utilisent la base de données (surement la méthode insertAbonnement() comme l'indique ghorgor)...

    Donc c'est ce code là qu'il faut nous montrer... Le code que tu nous montre se contente de faire de l'affichage et de récupérer des valeurs mais ne correspond pas à ton erreur !!!
    En même temps le stacktrace de l'exception devrait te donner la ligne de l'erreur dans ta méthode... ce serait bien de nous la donner en même temps...

    En général ce type d'erreur peut survenir si on effectue des next() en trop sur le ResultSet...

    a++

  6. #6
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Points : 44
    Points
    44
    Par défaut
    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
      public int insertAbonnement(Abonnement abt) {
        int idxRet = -1;
        String sql = "INSERT INTO t_abonnement (abt_dateDebut, abt_dateFin, abt_enCours, abt_depot, abt_prix) " +
            "VALUES ('" + abt.getAbt_dateDebut() + "', '" + abt.getAbt_dateFin() +
            "', '"
            + abt.getAbt_enCours() + "', '" + abt.getAbt_Depot() + "', '"
            + abt.getAbt_prix() + "')";
     
        int nbrRec = dbc.executeSQL(sql);
        if (nbrRec == 1) {
          // recherche de l'index
          String rsql = "SELECT abt_id FROM t_abonnement WHERE abt_dateDebut = '" +
              abt.getAbt_dateDebut() +
              "' AND abt_dateFin = '" + abt.getAbt_dateFin() +
              "' AND abt_enCours = '" + abt.getAbt_enCours()
              + "' AND abt_depot = '" + abt.getAbt_Depot() + "' AND abt_prix = '" +
              abt.getAbt_prix() + "'";
          ResultSet rs = dbc.createResultSet(rsql);
          try {
            if (rs != null) {
              rs.next();
              idxRet = rs.getInt(1);
            }
          }
          catch (SQLException se) {
            dbc.showListSqlExceptions(se);
          }
          try {
            if (rs != null) {
              rs.close();
            }
          }
          catch (SQLException se) {
            dbc.showListSqlExceptions(se);
          }
        }
     
        return idxRet;
      }

  7. #7
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Points : 44
    Points
    44
    Par défaut
    j'ai utilisé le meme genre de requetes pour d'autres choses et ca marche

  8. #8
    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 Hydre
    j'ai utilisé le meme genre de requetes pour d'autres choses et ca marche
    Ce n'est pas parce que ca marche dans un cas que le code est forcément sans erreur...

    Le problème semble venir de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if (rs != null) {
              rs.next();
              idxRet = rs.getInt(1);
            }
    Tu appelles rs.next() sans vérifier sa valeur... Et si la requête est vide tu n'as pas le droit de récupérer des éléments depuis le ResultSet (puisqu'il n'y en as pas).
    Il faut donc obligatoirement vérifier la valeur de retour de next() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            if (rs != null) {
              if (rs.next()) {
                        idxRet = rs.getInt(1);
              }
            }
    a++

    PS : je ne sais pas ce que fait la méthode showListSqlExceptions() mais il est utile de toujours faire un printStackTrace() pour savoir d'où vient l'erreur... en particulier lorsqu'on débugge...

  9. #9
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Points : 44
    Points
    44
    Par défaut
    merci bien

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Meme pas le temps de faire une pause clope, il y a un Adiguba qui a fait tout le boulot... Pas juste !!!

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 Titounet007 dans le forum JDBC
    Réponses: 13
    Dernier message: 05/10/2009, 14h16
  3. État de curseur non valide
    Par gabay dans le forum JDBC
    Réponses: 1
    Dernier message: 05/05/2009, 17h59
  4. Réponses: 1
    Dernier message: 19/04/2007, 11h44
  5. [JDBC][SQLException] Etat de curseur non valide
    Par chti_juanito dans le forum JDBC
    Réponses: 7
    Dernier message: 03/11/2005, 20h13

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