Pb de tableau de String passé en paramètre

cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006 - 29 août 2006 à 11:16
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 29 août 2006 à 13:08
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

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
29 août 2006 à 11:47
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"
0
cs_Yossi Messages postés 40 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 5 septembre 2006
29 août 2006 à 12:23
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 ...  
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
29 août 2006 à 13:08
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
0
Rejoignez-nous