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-ODBC] Etat de curseur non valide


Sujet :

JDBC Java

  1. #1
    I o
    I o est déconnecté
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 12
    Points
    12
    Par défaut [JDBC-ODBC] Etat de curseur non valide
    Bonjour,
    j'effectue une requete via le pont JDBC - ODBC
    L'acces a ma table se passe sans probleme, mais, lors de la lecture du ResultSet, une erreur se produit.Je ne parviens pas a en déterminer la cause.

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PreparedStatement requete1 = conn.connect().prepareStatement("select LANGUAGE from TABLE where ? = ? ");
          requete1.setString(1,entity);
          requete1.setString(2,ent);
          ResultSet rs1 = requete1.executeQuery();
          rs1.next();
          String sqlStm = " where LANGUAGE = "+rs1.getString("LANGUAGE");
    Voici l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] État de curseur non valide

  2. #2
    I o
    I o est déconnecté
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    en transformant le PreparedStatement en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PreparedStatement requete1 = conn.connect().prepareStatement("select LANGUAGE from TABLE where "+entity+" = "+ent+"");
    ca fonctionne

    J'aimerai comprendre pourquoi il n'accepte pas mes Quelqu'un a-t-il une idée?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 73
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Je connais pas ces trucs, mais je te propose mon aide (histoire d'avoir un avis extérieur et de réfléchir sur le trux à deux)...

    Sur lequel de tes il coince est-ce que çà change quelque chose de changer leur ordre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          requete1.setString(2,ent);
          requete1.setString(1,entity);
    Est-ce qu'il plante sur le premier qu'il trouve ou est-ce qu'il plante dans les deux cas sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete1.setString(1,entity);
    J'avancerais une théorie : je n'ai pas trouvé d'exemple où on peut faire une PreparedStatement avec un ? au niveau du nom du champs à chaque fois il s'agit de ? pour des valeurs...

    Sinon, autre piste, regarde peut-etre aussi les :
    http://java.developpez.com/faq/jdbc/...ment#setObject

    Cordialement,
    PS : N'oublie pas le tag [Résolu] (en cliquant sur http://pouiller.eclipse.free.fr/avatar/resolu.gif), si ton problème est résolu...

  4. #4
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 65
    Points : 74
    Points
    74
    Par défaut
    est ce que comme ça ça passe mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    conn.connect();
    PreparedStatement requete1 = conn.prepareStatement("select LANGUAGE from TABLE where ? = ? ");
    requete1.setString(1,entity);
    requete1.setString(2,ent);
    ResultSet rs1 = requete1.executeQuery();
    rs1.next();
    String sqlStm = " where LANGUAGE = "+rs1.getString("LANGUAGE");
    le champ 2 est-il du type string (cad ds ta base en char, varchar ...) ?
    après, faudrait regarder la javadoc, mais il n'est peut etre pas possible de construire à la fois le champs et la clause ...

  5. #5
    I o
    I o est déconnecté
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    les types sont corrects dans la base de données et le problème se pose même si je n'insère dans mon PreparedStatement que la valeur et non le nom du champ.

    en fait, il doit s'agir d'un problème avec access car avec Oracle, cela fonctionne tres bien.

  6. #6
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Grand débat que de savoir si dans les PreparedStatement, on peux modifier les champs ou juste les valeurs....

    A priori, même si ce n'est pas clair dans la définition du jdbc, c'est plutot orienté pour les valeurs (sinon, comment précompiler la requête?), donc après, c'est laissé au bon vouloir du SGBD, et de son implémentation de jdbc.

    Apparement, Oracle est plus large que Microsoft....

  7. #7
    I o
    I o est déconnecté
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par denisC
    Apparement, Oracle est plus large que Microsoft....
    lol

    enfin, le principal est que j'ai trouvé une solution qui fonctionne, même si le code n'est pas tres "propre".

    Merci a tous de votre aide.

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2015
    Messages : 1
    Points : 2
    Points
    2
    Par défaut
    oui moi aussi j'ai le meme probleme si sa:
    conc();
    rs = st.executeQuery("select p.nom, COUNT(i.idA)AS MyColonne"
    + " from preoccupation p, inflience i "
    + " where p.idA= i.idA "
    + " GROUP BY p.nom ;");

    while(rs.next()){
    String nom = rs.getString("nom");
    int nb = rs.getInt("MyColonne");
    System.out.println("le nom est : "+nom);
    System.out.println("le nb est : "+nb);
    pieDataset.setValue(nom+"= "+nb, new Integer(nb));
    }
    con.close();
    st.close();

    alors moi je désigné avec les resulta mais le resulta est juste et tout va bien mais j'ais le probleme de java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] ?tat de curseur non valide dans la ligne String nom = rs.getString("nom");

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/04/2007, 11h44
  2. Etat de curseur non valide
    Par chti_juanito dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/01/2006, 13h33
  3. [JDBC][SQLException] Etat de curseur non valide
    Par chti_juanito dans le forum JDBC
    Réponses: 7
    Dernier message: 03/11/2005, 20h13
  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