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 :

Comment récupérer les valeurs dans une requête


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut Comment récupérer les valeurs dans une requête
    Bonjour
    J'ai maintenant une couche driver qui marche, je travaille sur la couche de plus haut niveau et j'ai une question à ce sujet:
    Dans un premier temps je vous net le code:
    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
     
    		   pListText = new ArrayList<Structure.ElementWork>();
    		   String cmd = "SELECT siIdDocument, vcDocument FROM T_WORK_INFORMATION WHERE siIdStateDocument = 3";
    		   iNbResultFound = 0;
    		   iNbResultFound = InterbaseManager.ExecuteSelectRequest( cmd);
    		   try
    		   {
    			   while( InterbaseManager.myReader.next());
    			   {
    				   WorkElement.Id = InterbaseManager.myReader.getInt( 0);
    				   WorkElement.wsText = InterbaseManager.myReader.getString( 1);
    				   pListText.add(WorkElement);
    			   }
    		   }
    		   catch(Exception ex)
    		   {
    			   ex.printStackTrace();
    		   }
    puis le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] 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 com.all4tec.matelo.linguistique.wizards.MissionDatabaseManager.ReadWork(MissionDatabaseManager.java:81)
    	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard.RecupereNomDesFichier(LinguistiqueImportWizard.java:61)
    	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard$1.run(LinguistiqueImportWizard.java:87)
    	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
    Je vous demande comment adresser les champs dans la boucle while du code.
    J'ai essayé dans un premier temps de partir à 1 puis j'ai essayé de partir à 0
    Quand on compte à partir de 1 on récupère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] État de curseur non valide
    à Noter que dans la base siIdDocument est le premier enregistrement et vcDocument est le deuxième
    J'ai modifié le programme pour me rendre indépendant de la question "est ce que on doit dire sur l'index":
    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
     
    		   pListText = new ArrayList<Structure.ElementWork>();
    		   String cmd = "SELECT siIdDocument, vcDocument FROM T_WORK_INFORMATION WHERE siIdStateDocument = 3";
    		   iNbResultFound = 0;
    		   iNbResultFound = InterbaseManager.ExecuteSelectRequest( cmd);
    		   try
    		   {
    			   while( InterbaseManager.myReader.next()&& iNbResultFound > 0);
    			   {
    				   String nom;
    				   nom = "siIdDocument";
    				   int index = InterbaseManager.myReader.findColumn(nom);
    				   WorkElement = new Structure.ElementWork();
    				   WorkElement.Id = InterbaseManager.myReader.getInt( index);
    				   index++;
    				   WorkElement.wsText = InterbaseManager.myReader.getString( index);
    				   pListText.add( WorkElement);
    				   iNbResultFound--;
    			   }
    		   }
    		   catch( Exception ex)
    		   {
    			   ex.printStackTrace();
    			}
    mais cette méthode n'a rien changé le premier index est positionné a 1 et il part en carafe( en exception)
    Je me demande si on ne doit pas coder int index dans un type plus spécialisé?
    Celui qui m'aidera sera

  2. #2
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut les besoins sont ils complet
    J'ai fait pas mal d'ajouts dans ce thread, Que manque t il? peut être le code réactualisé
    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
                         int iNbResultFound;
    		   pListText = new ArrayList<Structure.ElementWork>();
    		   String cmd = "SELECT siIdDocument, vcDocument FROM T_WORK_INFORMATION WHERE siIdStateDocument = 3";
    		   iNbResultFound = 0;
    		   iNbResultFound = InterbaseManager.ExecuteSelectRequest( cmd);
    		   ResultSetMetaData metadata = InterbaseManager.myReader.getMetaData();
    		   int typeSQL = metadata.getColumnType( 1);
    		   String nomTypeSQL = metadata.getColumnTypeName( 1);
    		   String typeJava = metadata.getColumnClassName( 1);
    		   try
    		   {
    			   while( InterbaseManager.myReader.next()&& iNbResultFound > 0);
    			   {
    				   java.lang.Integer index = InterbaseManager.myReader.findColumn( "siIdDocument");
    				   WorkElement = new Structure.ElementWork();
    				   int id =  InterbaseManager.myReader.getInt( "siIdDocument");
    				   String str = InterbaseManager.myReader.getString( "vcDocument");
    				   WorkElement.Id = id;
    				   WorkElement.wsText = str;
    				   pListText.add( WorkElement);
    				   iNbResultFound--;
    			   }
    		   }
    		   catch( Exception ex)
    		   {
    			   ex.printStackTrace();
    			}

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Il semble que tu attaque directement une librairie sun sun.jdbc.odbc... Qui correspond à l'implémentation de ResultSet
    Une rapide lecture de la documentation indique :
    int getInt(int columnIndex)
    Parameters:
    columnIndex - the first column is 1, the second is 2, ...
    Returns:
    the column value; if the value is SQL NULL, the value returned is 0
    Si tu n'es pas sûr des index à utiliser il est préférable d'utiliser les noms des colonnes :

    int getInt(String columnLabel)
    Sinon il nous faudrait la déclaration de certaines de tes variables On ne sait pas exactement ce qu'est InterbaseManager.myReaderNote : Ton code devrait ressemblé à cela pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    pListText = new ArrayList<Structure.ElementWork>();
    String cmd = "SELECT siIdDocument, vcDocument FROM T_WORK_INFORMATION WHERE siIdStateDocument = 3";
    InterbaseManager.ExecuteSelectRequest(cmd);
    ResultSet resultset = InterbaseManager.myReader;
    try {
       while( resultset.next()){
    		WorkElement = new Structure.ElementWork();
    		WorkElement.Id = resultset.getInt( "siIdDocument");
    		WorkElement.wsText = resultset.getString( "vcDocument");
    		pListText.add( WorkElement);
    	}
    } catch( Exception ex) {
    	ex.printStackTrace();
    }
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut OUI
    Je suis d'accord avec vous mon code ressemble au votre tout au moins en ce qui concerne le désignation des colonnes. et il part en exception état du curseur non valide. Je recopie votre code et je constate que rien ne change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] État de curseur non valide

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Quel est le résultat de ce code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String cmd = "SELECT siIdDocument, vcDocument FROM T_WORK_INFORMATION WHERE siIdStateDocument = 3";
    InterbaseManager.ExecuteSelectRequest(cmd);
    ResultSet resultset = InterbaseManager.myReader;
    ResultSetMetaData rsmd = resultset.getMetaData();
    System.out.println("Type de id Document : "+rsmd .getColumnTypeName(1));
    System.out.println("Type de document : "+rsmd .getColumnTypeName(2));
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  6. #6
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut J'ai copié le code
    Il s'est déroulé correctement
    il a ressortie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Type de id Document : int identity
    Type de document : varchar
    est ce que le fait que le champ soit identité peut avoir un rapport

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/03/2009, 15h20
  2. Réponses: 21
    Dernier message: 18/11/2008, 14h36
  3. Récupérer les valeurs d'une requête SQL dans un champs html SELECT
    Par tamiii dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/11/2007, 13h27
  4. Réponses: 4
    Dernier message: 13/11/2006, 17h49
  5. Comment eviter les doubons dans une requête?
    Par jyms2006 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/03/2006, 14h08

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