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

Servlets/JSP Java Discussion :

Select qui retourne le premier enregistrement


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Points : 75
    Points
    75
    Par défaut Select qui retourne le premier enregistrement
    Bonjour
    Après selection dans un premier combo, une requête s'exécute coté serveur (Servlet) et interroge la base MySql qui retourne des info que je dois inserer dans le deuxieme combo.

    Cette info est toute les informations dans une colonne de la table, ici la colonne Ref par exemple :



    la fonction qui retourne ce résultat est :

    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
    public String[][] select(String table, String key) {
     
            String row[][];
            try {
                Statement sql = db.createStatement();
                ResultSet rs = sql.executeQuery("SELECT "+key+" from "+table);
                ResultSetMetaData rsm = rs.getMetaData();
                row = new String [10][1];
                rs.beforeFirst();
                int j=0;
                while (rs.next()) {
                    for (int i = 1; i <= 5; i++) {
                        row[j][1] = rs.getString(i);
                    }
                    j++;
                }
                return row;    
            }
     
            catch(Exception e) {
                System.out.println("Erreur : " + e.getMessage());
                return null;
            }
        }
    J'essaie de me positionner sur la première colonne et ainsi parcourir que les lignes... mais cette fonction ne me retourne rien...

    Si quelqu'un a une meilleur idée ? aussi si il y a une possibilité à ce que je sache le nombre de ligne dans la table..

    l'affichage des données recuperé se fasse ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    String records[][] = db.select(tableName, key);
                        for (int i = 0; i < records.length; i++) {
                            for(int j=0;j<records[i].length;j++){
                                if(records[i][j] != null){
     
                                    htmlCode+=" <option> "+records[i][j]+"</option>";
                                }
                            }
     
     
     
                        }
                        out.println(htmlCode);
    Mais cela ne me retourne rien...

    Eclipse en faite m'indique l'erreur suivante (généré par l'exception) :
    Erreur : 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.lang.NullPointerException
        at Controller.doGet(Controller.java:146)
    ma servlet s'appelle Controller, et la ligne pointé c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int i = 0; i < records.length; i++) {

  2. #2
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Bonjour,

    L'erreur n'est pas vraiment à l'endroit que tu montres mais se déroule bien avant. Le problème est que tu ne t'en es pas rendu compte à cause d'un truc tout bete, ta façon de gérer les exceptions.

    Dans select, tu as row défini ainsi:
    row = new String [10][1];

    Maintenant, tu fais dans ta boucle while un truc bizarre mais bon...
    c'est surtout ici que ça pète:
    row[j][1] = ...
    Un tableau commence à l'indice 0. Le 1 que tu mets pointe sur la 2eme case du tableau qui n'existe pas car tu as créé qu'une seule colonne. Donc, ceci retourne naturellement une ArrayIndexOutOfBoundsException
    Mais tu ne t'en rends pas compte car tu interceptes l'erreur avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch(Exception e) { 
               System.out.println("Erreur : " + e.getMessage()); return null;
    }
    Ton programme ne s'arrête pas et te rend même null comme valeur de retour, d'où la nullpointer juste après.

    Elementaire mon cher vladimire.
    Affaire résolue

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/07/2012, 13h33
  2. select qui retourne que le premier element
    Par sallemel dans le forum Hibernate
    Réponses: 6
    Dernier message: 12/12/2008, 17h40
  3. un SELECT qui retourne plus de ligne que la table
    Par gomodo dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/10/2007, 14h17
  4. me.recalc retourne au premier enregistrement
    Par mooh91 dans le forum IHM
    Réponses: 2
    Dernier message: 18/02/2007, 01h49
  5. Faire un Select qui retourne dans un certain ordre
    Par Rodie dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/01/2007, 22h29

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