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 :

Index de descripteur non valide (Mssql & Eclipse)


Sujet :

JDBC Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Index de descripteur non valide (Mssql & Eclipse)
    Bonjour à tous,

    J'ai un petit soucis, j'utilise une db MsSqlServer 2005 et Eclipse.
    J'ai dû rajouter 2 tables (localite, pays)par la suite et depuis impossible de lire toutes les donnés à partir du code Java. JE reçois le msg d'erreur suivant:
    Index de descripteur non valide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    rs = connection.getStatement().executeQuery
         ("SELECT * "+ 
         " FROM compagnie"
         +" JOIN localite ON localite.idlocalite = compagnie.idlocalite"
         +" JOIN pays ON pays.idpays = compagnie.idpays"
         +" JOIN comptype ON comptype.idcomptype = compagnie.idcomptype"
          );		
     
    	while(rs.next())
    	{
    		this.cpcomp = rs.getInt("codep");
    		this.compville = rs.getString("ville");
    		this.idpays = rs.getInt("idpays");
    Si j'initialise seulement cpcomp et compville pas de problème, si je rajoute idpays il se plante.

    Quand j'exécute la requête directement dans le sgbd cela fonctionne.

    Quelqu'un peut-il m'aider svp. Merci d'avance.

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Quel est le résultat de la requête (enfin le nom des colonnes) ?
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    En théorie le résultat s'affiche dans une JTable. Mais je ne suis pas arrivé jusque là... je l'ai simplement testé sur la sortie console.

    Je lis d'autres champs avant ça ne pose pas de problème, c'est quand je tombe sur "Idpays" qu'il me donne l'erreur.

    voilà ce que j'obtiens comme résultat sur la console:
    idcomp: 45
    reference: AIR
    Nom: airline
    adresse: Rue de l'aviation 50
    idlocalite: 1
    codepostal: 123
    ville: Etoile
    java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Index de descripteur non valide
    java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Index de descripteur non valide
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(Unknown Source)
    at element.CompagnieOld.listeCompagnie(CompagnieOld.java:404)
    at element.TestCompagnie.main(TestCompagnie.java:28)


    Je cherche et j'ai toujours pas trouvé la solution.
    Si je n'ai pas bien saisi la question , excusez moi, je suis débutant .

  4. #4
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Ton idpays est bien un entier ?

    en faisant "select *" quels sont exactement les champs retournes par ta requete?

    Peut -être idpays est selectionné 2 fois et du coup renommé par mssql.

    Essaye plutot de mettre les noms des champs en clair :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select codep,ville,pays.idpays as idp from ...
    et ensuite tu recuperes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.idpays = rs.getInt("idp");

  5. #5
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    +1

    pour moi l'erreur viendrait du fait que idpays n'est pas le bon nom de colonne ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Un tout grand MERCI !!!

    Il se fait que les noms et types de colonnes étaient correctes. Mais il y avait peut-être 2 deux fois le même nom de colonne avec le "SELECT *".

    J'ai spécifié chaque colonne que j'avais besoin avec les Alias quand nécessaire et çà fonctionne !

    Ce qui me donne le requête 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
     
    rs = connection.getStatement().executeQuery
    			(		"SELECT  compagnie.idcomp,compagnie.reference,compagnie.nom,compagnie.adresse," +
    					"localite.idlocalite,localite.codep,localite.ville,pays.idpays as idp,paysfr,perscont,"+
    					"compagnie.persconttel,compagnie.perscontfax,compagnie.perscontmail,compagnie.adressefac,"+
    					"compagnie.idlocalitefac as idlocfac,localite.codep as codepfac,localite.ville as villefac," +
    					"compagnie.idpaysfac as paysfac,pays.paysfr as paysfrfac,datefinac,compagnie.idcomptype," +
    					"comptype.libelle"+
     
     
    					" FROM compagnie"+
    					" JOIN localite ON localite.idlocalite = compagnie.idlocalite"+
    					" JOIN pays ON pays.idpays = compagnie.idpays"+
    					" JOIN comptype ON comptype.idcomptype = compagnie.idcomptype");
    C'est bizarre que l'exécution dans la console de MSSQL fonctionnait sans rouspèter. M'enfin, maintenant ça fonctionne c'est le principal !

    Encore merci à tous.

  7. #7
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par gam92 Voir le message
    C'est bizarre que l'exécution dans la console de MSSQL fonctionnait sans rouspèter. M'enfin, maintenant ça fonctionne c'est le principal !
    C'est normal car les sgbd cree lui meme les alias si besoin et si il ne sont pas spécifiés. Mais ensuite, c'est au niveau de la classe ResultSet que ca pose probleme, pas au niveau sql.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je comprend mieux maintenant.
    J'en tiendrai compte pour la suite.
    Encore un grand merci

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

Discussions similaires

  1. [JDBC]ResultSet:Index de descripteur non valide
    Par etiennegaloup dans le forum JDBC
    Réponses: 8
    Dernier message: 20/04/2018, 17h10
  2. [WD15] Descripteur non valide
    Par Yolak dans le forum WinDev
    Réponses: 1
    Dernier message: 24/01/2011, 14h23
  3. Réponses: 4
    Dernier message: 23/12/2008, 09h40
  4. IOException : Descripteur non valide
    Par akrobat dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 20/06/2006, 09h12
  5. TThread et waitfor - descripteur non valide
    Par code34 dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2003, 23h44

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