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

Java Discussion :

Problème traitement d'un ResultSet


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut Problème traitement d'un ResultSet
    Bonjour,

    Je rencontre un problème dans le traitement de mon Resultset. J'ai essayé ma manière habituelle :
    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
    public Vector getResults(String requete) {
            Vector vecteur = new Vector();
            try {
                Statement stmt = connexion.createStatement();
                //resultSet = stmt.executeQuery(requete);            
                resultSet = stmt.executeQuery("select UT#NO, UT#CODE_UTILISATEUR, UTNOM_UTILISATEUR, UTPRENOM, UTTELEPHONE_UTILISATEUR, UTMAIL, UTEXPIRATION_UTILISATEUR, UTPASSWORD_UTILISATEUR from mh_UT#UTILISATEUR");             
                resultSetMetaData = resultSet.getMetaData();
                int columnCount = resultSetMetaData.getColumnCount();
                System.out.println("Nombre de colonnes : " + columnCount);
                System.out.println("Ligne courante : " + resultSet.getRow());
     
                while (resultSet.next()) {
                    System.out.println("Ligne courante : " + resultSet.getRow());
                    String ligne[] = new String[columnCount];
     
                    for (int i = 1; i <= columnCount; i++) {
                        ligne[i] = resultSet.getString(i);
                    }
                    vecteur.add(ligne);
                }
            } catch (SQLException e) {
                System.out.println("Erreur dans la manipulation du ResultSet.");
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return vecteur;
        }
    Mais il semble que le getString() pose problème. L'erreur suivante apparaît dans la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Nombre de colonnes : 8
    Ligne courante : 0
    Ligne courante : 1
    java.sql.SQLException: Index de colonne non valide
    Erreur sur la manipulation du ResultSet
            at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
            at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
            at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
            at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:379)
            at cerbere.ressources.pojo.BaseDeDonnees.getResults(BaseDeDonnees.java:133)
            at cerbere.dao.pojo.DAO_Utilisateurs.getListUtilisateur(DAO_Utilisateurs.java:30)
    Lorsque je démunis ma méthode du getString le resultSet est parcouru sans problème jusqu'à sa 1716ème ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Ligne courante : 0
    Ligne courante : 1
    Ligne courante : 2
    Ligne courante : 3
    Ligne courante : 4
    ...
    Ligne courante : 1714
    Ligne courante : 1715
    Ligne courante : 1716
    Quelqu'un a-t-il une idée?
    Merci d'avance.

  2. #2
    Membre très actif
    Inscrit en
    Mars 2008
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 283
    Par défaut
    essaie en utilisant ce code (l'erreur ne va pas disparaître je sais)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                    for (int i = 1; i <= columnCount; i++) {
                        System.out.println("Lecture de la colonne " + i);
                        ligne[i] = resultSet.getString(i);
                    }
    Si tu vois écrit "Lecture de la colonne 8", vérifie que toutes tes colonnes sont bien de type TEXT ou semblable.

    Sinon, réduit tes indices de 1 (en d'autres termes tu es tombé sur une erreur similaire à un IndexOutOfBoundsException)

    Je n'ai utilisé SQL qu'une fois (avec java), alors je ne suis pas tout à fait sur de mes réponses.

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il y a déjà le fait que l'indice de ton tableau "ligne" commence à 0 alors que l'indice des colonnes commence à 1
    Il faudrait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for ( int i = 0; i < columnCount; i++)
    {
       ligne[i] = rs.getString(i+1);
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut
    Han le nul! Tant de temps passé sur une si petite connerie. Mon dieu mais qui suis-je devenu?

    Heureusement que vous êtes là.


    Voilà donc la solution de mon problème :
    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
    Statement stmt = connexion.createStatement();
                //resultSet = stmt.executeQuery(requete);            
                resultSet = stmt.executeQuery(requete);             
                resultSetMetaData = resultSet.getMetaData();
                int columnCount = resultSetMetaData.getColumnCount();
                System.out.println("Nombre de colonnes : " + columnCount);
                System.out.println("Ligne courante : " + resultSet.getRow());
                while (resultSet.next()) {
                    System.out.println("Ligne courante : " + resultSet.getRow());
                    String ligne[] = new String[columnCount];
                    for (int i = 0; i < columnCount; i++) {
                        ligne[i] = resultSet.getString(i+1);
     
                        System.out.println("Colonne " + (i + 1) + " : " + ligne[i]);
                    }
                    vecteur.add(ligne);
                }

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

Discussions similaires

  1. Réponses: 42
    Dernier message: 18/04/2008, 14h44
  2. Problèmes traitements Matriciels
    Par stansoad0108 dans le forum Langage
    Réponses: 1
    Dernier message: 13/12/2007, 03h22
  3. problème : Traitement d'une chaine
    Par hitsugaya dans le forum Langage
    Réponses: 15
    Dernier message: 27/04/2007, 11h15
  4. Réponses: 13
    Dernier message: 24/10/2006, 14h17
  5. problème traitement formulaire cgi(débutant)
    Par Shyboy dans le forum Web
    Réponses: 13
    Dernier message: 02/07/2006, 18h17

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