Pb de tableau de String passé en paramètre

Signaler
Messages postés
40
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
5 septembre 2006
-
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
-
Bonjour,

j'ai un petit problème de null pointer Exception avec le code suivant:

    j'ai une page jsp qui utilise une fonction statique  :
      
    String[][]    nomsProduits = new String[2][Langue.getNbLangues()];
    Connexion Langues = new Connexion("select * from langue");
    int i =0;
    while(Langues.next())
    {
        nomsProduits[0][i]=Langues.getString("idLangue");
        nomsProduits[1][i]=request.getParameter("nomProduit"+Langues.getString("idLangue"));
        i++;
    }
   
Produit.insertion(nomsProduits,Integer.getInteger(request.getParameter("idSousRayon"))   );
   

Voici le code de la fonction statique :

    public static void insertion(String nomsProduits[][], int idSousRayon) throws SQLException
    {
        Connexion.requete( "insert into caractproduit ( idsousrayon_fk) values ('"+idSousRayon+"')");
        String idTable = Connexion.getValeur("select max(idTable_fk) as maxi from caractproduit;");
        Connexion.requete("CREATE TABLE `Produit"+idTable+"` (    `idProduit` INT NOT NULL AUTO_INCREMENT PRIMARY KEY )");
    int nbLangues= Langue.getNbLangues();
        for (int i = 0 ;i<nbLangues ;i++)
            Connexion.requete( "insert into caractproduitlangue ( idtable_fk, idlangue_fk, nomproduit, visible) values ('" +
                    idTable+"',"+
                    "'"+nomsProduits[0][i]+"',"+
                    "'"+nomsProduits[1][i]+"',"+
                    "'0');");
    }

Je pense qu'il doit y avoir un problème au niveau (de la déclaration ?) du tableau de chaines vu que ça marche lorsque j'extrais le contenu de la méthode et je l'exécute sur la page web sans passer par la fonction.
Merci d'avance ! 

3 réponses

Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
17
heu c pas un ResultSet qu'on utilise pour envoyer une requete ?


ou alors tu oublie de nous montre du code ....

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Messages postés
40
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
5 septembre 2006

c 'est pas le problème puisque comme je l'ai dit :ça marche très bien lorsque j'extrais le contenu de la méthode et je l'exécute sur la page web sans passer par la fonction.  cad lorsque je fais ca :

 String[][]    nomsProduits = new String[2][Langue.getNbLangues()];
    Connexion Langues = new Connexion("select * from langue");
    int i =0;
    while(Langues.next())
    {
        nomsProduits[0][i]=new String (Langues.getString("idLangue"));
        nomsProduits[1][i]=new String(request.getParameter("nomProduit"+Langues.getString("idLangue")));
        out.write(nomsProduits[0][i]+" : "+nomsProduits[0][i]+"
");
        i++;
    }
    int idSousRayon =Integer.parseInt( request.getParameter("idSousRayon"));
   
    Connexion.requete( "insert into caractproduit ( idsousrayon_fk) values ('"+idSousRayon+"')");
    String idTable = Connexion.getValeur("select max(idTable_fk) as maxi from caractproduit;");
    Connexion.requete("CREATE TABLE `Produit"+idTable+"` (    `idProduit` INT NOT NULL AUTO_INCREMENT PRIMARY KEY )");
int nbLangues= Langue.getNbLangues();
    for ( i = 0 ;i<nbLangues ;i++)
        Connexion.requete( "insert into caractproduitlangue ( idtable_fk, idlangue_fk, nomproduit, visible) values ('" +
                idTable+"',"+
                "'"+nomsProduits[0][i]+"',"+
                "'"+nomsProduits[1][i]+"',"+
                "'0');");
   

Le problème est donc ailleurs ...  
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

Je ne vais pas vraiment répondre à ton problème mais j'ai des ptites questions :
C'est voulut quand tu fais :
out.write(nomsProduits[0][i]+" : "+nomsProduits[0][i]+"
");
ou c'est bien une faute de frappe et tu voulais faire :
out.write(nomsProduits[0][i]+" : "+nomsProduits[1][i]+"
");

par ce que tu ne trouve pas cela redondant d'afficher deux fois la même chose?

ensuite dans ta version qui bug pourquoi faire Integer.getInteger(....) et non Integer.parseInt(...) je sais bien que l'autoboxing du 1.5 c'est bien mais bon ici il n'y a pas vraiment d'interet de l'utiliser

et dans le remplissage de ton tableau même si normalement c'est implicite preserve le new String(...) soit :
while(Langues.next()) {
        nomsProduits[0][i] = new String( Langues.getString("idLangue") );
        nomsProduits[1][i] = new String( request.getParameter("nomProduit"+Langues.getString("idLangue")) );
        i++;
}

les tableaux sont souvent rebelle en java :D

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA