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 :

Problème quand l'appli interroge la BDD


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 28
    Par défaut Problème quand l'appli interroge la BDD
    Bonjour à tous !

    Alors voilà, je ne suis pas dev, et un Stagiaire a fait une webAppli Java.
    Du coup j'ai monté un serveur avec :
    - Apache - Tomcat
    - MySql - Phpmyadmin

    Le tout est bien installé et fonctionnel. J'ai Uploader son .war dans le dossier "webapps" de Tomcat5.5 via le "Web Manager Tomcat". Et j'ai importé sa base de données via Phpmyadmin.

    l'appli est accessible depuis l'URL http://ip_server/nom_appli

    Jusque là pas de soucis. Sauf que dès que l'appli interroge la BDD, j'ai ceci :

    Etat HTTP 500 -

    type Rapport d'exception

    message

    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    org.apache.jasper.JasperException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

    cause mère

    java.lang.NullPointerException
    bean.Produit.rechercherProduit(Produit.java:84)
    org.apache.jsp.Produit.ListeProduit_jsp._jspService(ListeProduit_jsp.java:72)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.
    Apache Tomcat/5.5
    N'étant pas dev, j'ai un peu de mal à comprendre. Avez-vous vous des pistes pour moi ??

    J'ai cherché déjà sur le net, sans trouver d'info assez concrète pour régler mon problème ..

    PS : Le stagiaire est partis sans vraiment savoir pourquoi cela ne fonctionnait pas, il a pas mal taffer dessus, c'est pourquoi j'aimerais arriver a faire fonctionner cette petit Appli

    Merci à vous !

  2. #2
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour,

    Ce qu'on peut dire et l'exception est levée dans la méthode "rechercherProduit" de la classe bean.Produit (ligne 84). Cette classe est utilisé par la page jsp "ListeProduit.jsp".

    Pour plus d'information, il nous faudrait le code de la classe et celui de la page jsp.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 28
    Par défaut
    Je suis désolé, mais je ne comprends pas vraiment ce que je dois te fournir pour que tu comprenne mieux le soucis ...

    Peut tu être plus clair ?.

    Merci de ta réponse rapidement !

  4. #4
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Il faudrait que tu nous montre le code de ta classe Produit et plus précisément la méthode rechercherProduit en nous indiquant qu'elle est la ligne 84 de la classe produit où se déclanche l'erreur NullPointerException.

  5. #5
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 28
    Par défaut
    Voici le code du fichier "RechercheProduit.jsp" :

    TSTJAVDENIS:/var/lib/tomcat5.5/webapps/donneestechniques/Produit# cat
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%
    String chemin;
    chemin = request.getRequestURI();
    getServletContext().setAttribute("cheminClient", chemin);
    getServletContext().setAttribute("cheminFournisseur", chemin);
    getServletContext().setAttribute("cheminTypeProduit", chemin);
    getServletContext().setAttribute("cheminTypeLigne", chemin);
    getServletContext().setAttribute("cheminProduit", chemin);
    %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Recherche d'un produit</title>
    </head>
    <body>
    <h1 align="center">Recherche d'un produit</h1>
    <br>
    <br>
    <div align="center">
    <a href="ListeProduit.jsp">Retour à la liste des produits</a><br>
    <br>
    <br>
    <form action="../RechercherProduit" method="post">
    <table>
    <tr>
    <td>Nom du produit : </td>
    <td>
    <input name="txtNomProduit" type="text">
    </td>
    </tr>
    <tr><td height="20"></td></tr>
    <tr>
    <td>Référence : </td>
    <td>
    <input name="txtReference" type="text">
    </td>
    </tr>
    <tr><td height="20"></td></tr>
    <tr>
    <td>Nom du client :</td>
    <td>
    <input name="txtNomClient" type="text" value=
    <%=getServletContext().getAttribute("NomClientRechercheProduit")%>
    >
    </td>
    <td>
    <a href="../Client/RechercheClient.jsp"><img src="../theme/filefind.png"></a>
    </td>
    </tr>
    <tr><td height="20"></td></tr>
    <tr>
    <td>Nom du fournisseur :</td>
    <td>
    <input name="txtNomFournisseur" type="text" value=
    <%=getServletContext().getAttribute("NomFournisseurRechercheProduit")%>
    >
    </td>
    <td>
    <a href="../Fournisseur/RechercheFournisseur.jsp"><img src="../theme/filefind.png"></a>
    </td>
    </tr>
    <tr><td height="20"></td></tr>
    <tr>
    <td>Type de produit :</td>
    <td>
    <input name="txtNomTypeProduit" type="text" value=
    <%=getServletContext().getAttribute("NomTypeProduitRechercheProduit")%>
    >
    </td>
    <td>
    <a href="../TypeProduit/RechercheTypeProduit.jsp"><img src="../theme/filefind.png"></a>
    </td>
    </tr>
    <tr><td height="20"></td></tr>
    <tr>
    <td>Type de ligne :</td>
    <td>
    <input name="txtNomTypeLigne" type="text" value=
    <%=getServletContext().getAttribute("NomTypeLigneRechercheProduit")%>
    >
    </td>
    <td>
    <a href="../TypeLigne/RechercheTypeLigne.jsp"><img src="../theme/filefind.png"></a>
    </td>
    </tr>
    </table>
    <input name="btnValider" type="submit" value="Valider" style="width: 100px; height: 50px">
    </form>
    </div>
    </body>
    La ligne 84 de ce code est la dernière des 3 suivantes (le ">") :

    <input name="txtNomTypeLigne" type="text" value=
    <%=getServletContext().getAttribute("NomTypeLigneRechercheProduit")%>
    >
    Merci à vous !

  6. #6
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 28
    Par défaut
    Citation Envoyé par jowo Voir le message
    Bonjour,

    Ce qu'on peut dire et l'exception est levée dans la méthode "rechercherProduit" de la classe bean.Produit (ligne 84). Cette classe est utilisé par la page jsp "ListeProduit.jsp".

    Pour plus d'information, il nous faudrait le code de la classe et celui de la page jsp.
    Voilà le code de ListeProduit.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <%@page import="bean.Produit"%>
    <%@page import="bean.TypeProduit"%>
    <%@page import="bean.Client"%>
    <%@page import="bean.Fournisseur"%>
    <%@page import="bean.TypeLigne"%>
    <%@page import="java.util.Vector"%>
    <%@page import="java.util.Enumeration"%>
    <%@page import="java.io.PrintWriter"%>
    <%
    String chemin;
    chemin = request.getRequestURI();
    getServletContext().setAttribute("cheminTypeProduit", chemin);
    getServletContext().setAttribute("cheminClient", chemin);
    getServletContext().setAttribute("cheminFournisseur", chemin);
    getServletContext().setAttribute("cheminTypeLigne", chemin);
    //Initialisation liste
    Vector<Produit> listeProduits = new Vector<Produit>();
    Produit p = new Produit();
    Enumeration<Produit> enumProduit;
    listeProduits = Produit.rechercherProduit((String)getServletContext().getAttribute("NomProduitListeProduit"),
    (String)getServletContext().getAttribute("NomTypeProduitListeProduit"),
    (String)getServletContext().getAttribute("ReferenceListeProduit"),
    (String)getServletContext().getAttribute("NomClientListeProduit"),
    (String)getServletContext().getAttribute("NomFournisseurListeProduit"),
    (String)getServletContext().getAttribute("NomTypeLigneListeProduit"));
    enumProduit = listeProduits.elements();
    %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Produits trouvés</title>
    </head>
    <body>
    <h1 align="center">Produits trouvés</h1>
    <br>
    <br>
    <div align="center">
    <a href="../index.html">Retour à l'accueil</a><br>
    <br>
    <a href="CreationProduit.jsp">Créer un nouveau produit</a><br>
    <br>
    <a href="RechercheProduit.jsp">Rechercher un produit</a><br>
    <br>
    <br>
    <table border="1px">
    <tr>
    <th></th><th>Nom du produit</th><th>Référence</th><th></th><th>Type de produit</th><th></th><th>Client</th>
    <th></th><th>Fournisseur</th><th></th><th>Type de ligne</th><th>Remarque</th><th>Modifier</th><th>Supprimer</th>
    </tr>
    <%
    while(enumProduit.hasMoreElements()){
    p = enumProduit.nextElement();

    out.println("<form action=\""+"../ModifierProduit"+"\" method=\""+"post"+"\">");
    out.println("<tr>");
    out.println("<td><input type=\""+"hidden"+"\" name=\""+"txtCodeProduit"+"\" value=\""+p.getCodeProduit()+"\"></td>");
    out.println("<td><input type=\""+"text"+"\" name=\""+"txtNomProduit"+"\" value=\""+p.getNomProduit()+"\"></td>");
    out.println("<td><input type=\""+"text"+"\" name=\""+"txtReference"+"\" value=\""+p.getReference()+"\"></td>");
    out.println("<td><input type=\""+"hidden"+"\" name=\""+"txtCodeTypeProduit"+"\" value=\""+p.getCodeTypeProduit()+"\"></td>");
    out.println("<td><input type=\""+"text"+"\" name=\""+"txtNomProduit"+"\" "+
    "value=\""+TypeProduit.nommerTypeProduit(p.getCodeTypeProduit())+"\"></td>");
    out.println("<td><input type=\""+"hidden"+"\" name=\""+"txtCodeClient"+"\" value=\""+p.getCodeClient()+"\"></td>");
    out.println("<td><input type=\""+"text"+"\" name=\""+"txtNomClient"+"\" "+
    "value=\""+Client.nommerClient(p.getCodeClient())+"\"></td>");
    out.println("<td><input type=\""+"hidden"+"\" name=\""+"txtCodeFournisseur"+"\" value=\""+p.getCodeFournisseur()+"\"></td>");
    out.println("<td><input type=\""+"text"+"\" name=\""+"txtNomFournisseur"+"\" "+
    "value=\""+Fournisseur.nommerFournisseur(p.getCodeFournisseur())+"\"></td>");
    out.println("<td><input type=\""+"hidden"+"\" name=\""+"txtCodeTypeLigne"+"\" value=\""+p.getCodeTypeLigne()+"\"></td>");
    out.println("<td><input type=\""+"text"+"\" name=\""+"txtNomTypeLigne"+"\" "+
    "value=\""+TypeLigne.nommerTypeLigne(p.getCodeTypeLigne())+"\"></td>");
    out.println("<td><input type=\""+"text"+"\" name=\""+"txtRemarque"+"\" value=\""+p.getRemarque()+"\"></td>");
    out.println("<td><input type=\""+"radio"+"\" value=\""+"M"+"\" name=\""+"rdModifier"+"\"></td>");
    out.println("<td><input type=\""+"radio"+"\" value=\""+"S"+"\" name=\""+"rdModifier"+"\"></td>");
    out.println("<td><input type=\""+"submit"+"\" value=\""+"Valider"+"\" name=\""+"btnValider"+"\"></td>");
    out.println("</tr>");
    out.println("</form>");
    }
    %>
    </table>
    </div>
    </body>

  7. #7
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Comment arrives tu à cette JSP à partir d'un formulaire d'une Servlet ?


    vérifie la valeur renvoyé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getServletContext().getAttribute("NomTypeLigneRechercheProduit")
    cette information est bien concerver au niveau de ta servlet et non dans la request ou la session ?

    de plus tu ne répond pas à la question qui t'es posée je recite ton log erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bean.Produit.rechercherProduit(Produit.java:84)
    org.apache.jsp.Produit.ListeProduit_jsp._jspService(ListeProduit_jsp.java:72)
    On te demande la ligne 84 de ton bean Produit pas le source de la JSP qui l'appel de plus ton tomcat génére un listeproduit_jsp.java qu'il conserve il me semble et tu dois y avoir une ligne 72 qui coince qui doit correspondre à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Produit.rechercherProduit((String)getServletContext().getAttribute("NomProduitListeProduit"),
    (String)getServletContext().getAttribute("NomTypeProduitListeProduit"),
    (String)getServletContext().getAttribute("ReferenceListeProduit"),
    (String)getServletContext().getAttribute("NomClientListeProduit"),
    (String)getServletContext().getAttribute("NomFournisseurListeProduit"),
    (String)getServletContext().getAttribute("NomTypeLigneListeProduit"));
    Après si tu fais pas plus d'effort on va arreter de perdre notre temps à t'aider.

  8. #8
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 28
    Par défaut
    Je n'ai absolument aucune connaissances en Java .. Donc quand vous me parlez de Servlet / JSP / Bean etc ... Je ne capte que dale ... J'essaye de faire au mieux ... désolé !

    Alors pour répondre :

    On te demande la ligne 84 de ton bean Produit pas le source de la JSP qui l'appel de plus ton tomcat génére un listeproduit_jsp.java qu'il conserve il me semble et tu dois y avoir une ligne 72 qui coince qui doit correspondre à
    Je n'ai pas de "listeproduit_jsp.java" ... J'ai fais une recherche sur tous le serveur, sans résultats !

    En voyant ça "Produit.java:84" J'ai pensé que l'erreur se trouvait dans le fichier Produit.java à la ligne 84 ... Aparament ça n'est pas le cas. Ou dois-je chercher alors ??

    Merci

  9. #9
    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
    Citation Envoyé par Skadi Voir le message

    En voyant ça "Produit.java:84" J'ai pensé que l'erreur se trouvait dans le fichier Produit.java à la ligne 84 ... Aparament ça n'est pas le cas. Ou dois-je chercher alors ??

    Merci
    C'est justement le code de cette classe qu'il nous faut (Produit.java).
    Peux-tu la montrer ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    L'erreur se produit dans la méthode rechercherProduit de la classe Produit.java (ligne 84). Nous n'avons pas le code de cette classe. Le fichier-source de Produit.java ne se trouve probablement pas dans le répertoire d'installation de l'application WEB.

    Tu nous a fourni le code de la page ListeProduit.jsp, on te remercie. On note que dans cette page, un appel est fait à la méthode rechercherProduit avec six arguments:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    isteProduits = Produit.rechercherProduit((String)getServletContext().getAttribute("NomProduitListeProduit"),
    (String)getServletContext().getAttribute("NomTypeProduitListeProduit"),
    (String)getServletContext().getAttribute("ReferenceListeProduit"),
    (String)getServletContext().getAttribute("NomClientListeProduit"),
    (String)getServletContext().getAttribute("NomFournisseurListeProduit"),
    (String)getServletContext().getAttribute("NomTypeLigneListeProduit"));
    Il se peut qu'un des ces arguments ne soit pas renseigné.

    Il faudra trouver où ces arguments sont renseignés (probablement durant une initialisation) et à quoi ils servent (en analysant le code de Produit.java)?

    Pour info:
    La méthode getServletContext() retourne le contexte de l'application WEB.

  11. #11
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 28
    Par défaut
    Merci à vous !

    Alors voici le Podruit.java (200 lignes par contre ... )

    String nomFournisseur, String nomTypeLigne) throws Exception {

    Vector<Produit> v = null;
    Statement rqt = null;
    ResultSet rs = null;

    if (nomProduit == null){
    nomProduit = "";
    }
    if (nomTypeProduit == null){
    nomTypeProduit = "";
    }
    if (reference == null){
    reference = "";
    }
    if (nomClient == null){
    nomClient = "";
    }
    if (nomFournisseur == null){
    nomFournisseur = "";
    }
    if (nomTypeLigne == null){
    nomTypeLigne = "";
    }

    try {
    cnx = Connexion.getCnx();
    rqt = cnx.createStatement();
    rs = rqt.executeQuery("SELECT * FROM PRODUITS,TYPESPRODUITS,CLIENTS,FOURNISSEURS,TYPESLIGNES "+
    "WHERE PRODUITS.CodeTypeProduit=TYPESPRODUITS.CodeTypeProduit AND PRODUITS.CodeClient=CLIENTS.CodeClient "+
    "AND PRODUITS.CodeFournisseur=FOURNISSEURS.CodeFournisseur "+
    "AND PRODUITS.CodeTypeLigne=TYPESLIGNES.CodeTypeLigne "+
    "AND NomProduit LIKE '%"+nomProduit+"%' AND NomTypeProduit LIKE '%"+nomTypeProduit+"%' "+
    "AND Reference LIKE '%"+reference+"%' AND NomClient LIKE '%"+nomClient+"%' "+
    "AND NomFournisseur LIKE '%"+nomFournisseur+"%' AND NomTypeLigne LIKE '%"+nomTypeLigne+"%' "+
    "ORDER BY NomProduit");
    Produit p = null;
    v = new Vector<Produit>();
    while (rs.next()){
    p = new Produit(rs.getInt("CodeProduit"), rs.getString("NomProduit"), rs.getString("PRODUITS.CodeTypeProduit"),
    rs.getString("Reference"), rs.getString("PRODUITS.CodeClient"), rs.getString("PRODUITS.CodeFournisseur"),
    rs.getString("PRODUITS.CodeTypeLigne"), rs.getString("Remarque"));
    v.add(p);
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }finally {
    try {
    if (rs != null) rs.close();
    if (rqt != null) rqt.close();
    if (cnx != null) cnx.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    return v;
    }

    public boolean modifierProduit(){

    boolean marche = true;

    try {
    // ouvre la connexion si elle n'est pas déjà ouverte
    cnx = Connexion.getCnx();
    // instruction SQL pour modifier un produit
    requete = "CALL MODIFICATIONPRODUIT (?,?,?,?,?,?,?,?)";
    // ajoute la requête à l'objet capable de contenir des requêtes
    pstm = cnx.prepareStatement(requete);
    // on remplit la requête avec les valeurs passées
    pstm.setString(1, this.getNomProduit());
    pstm.setString(2, this.getReference());
    pstm.setString(3, this.getCodeTypeProduit());
    pstm.setString(4, this.getCodeClient());
    pstm.setString(5, this.getCodeFournisseur());
    pstm.setString(6, this.getCodeTypeLigne());
    pstm.setString(7, this.getRemarque());
    pstm.setInt(8, this.getCodeProduit());
    // on execute la requête
    pstm.execute();
    pstm.close();
    cnx.close();
    } catch (Exception e) {
    System.out.println("Problème de requête " + e.getMessage());
    marche = false;
    }

    return marche;
    }

    public boolean supprimerProduit() throws SQLException {

    boolean marche = true;

    try {
    // ouvre la connexion si elle n'est pas déjà ouverte
    cnx = Connexion.getCnx();
    // instruction SQL pour supprimer un produit
    requete = "CALL SUPPRESSIONPRODUIT(?)";
    // ajoute la requête à l'objet capable de contenir des requêtes
    pstm = cnx.prepareStatement(requete);
    // on remplit la requête avec les valeurs passées
    pstm.setInt(1, this.getCodeProduit());
    // on execute la requête
    pstm.execute();
    pstm.close();
    cnx.close();
    } catch (Exception e) {
    System.out.println("Problème de requête " + e.getMessage());
    marche = false;
    }

    return marche;
    }


    public Produit() {
    super();
    }

    public Produit(Integer codeProduit, String nomProduit, String codeTypeProduit, String reference,
    String codeClient, String codeFournisseur, String codeTypeLigne, String remarque) {
    this.codeProduit = codeProduit;
    this.nomProduit = nomProduit;
    this.codeTypeProduit = codeTypeProduit;
    this.reference = reference;
    this.codeClient = codeClient;
    this.codeFournisseur = codeFournisseur;
    this.codeTypeLigne = codeTypeLigne;
    this.remarque = remarque;
    }


    public Integer getCodeProduit() {
    return codeProduit;
    }

    public void setCodeProduit(Integer codeProduit) {
    this.codeProduit = codeProduit;
    }

    public String getNomProduit() {
    return nomProduit;
    }

    public void setNomProduit(String nomProduit) {
    this.nomProduit = nomProduit;
    }

    public String getCodeTypeProduit() {
    return codeTypeProduit;
    }

    public void setCodeTypeProduit(String codeTypeProduit) {
    this.codeTypeProduit = codeTypeProduit;
    }

    public String getReference() {
    return reference;
    }

    public void setReference(String reference) {
    this.reference = reference;
    }

    public String getCodeClient() {
    return codeClient;
    }

    public void setCodeClient(String codeClient) {
    this.codeClient = codeClient;
    }

    public String getCodeFournisseur() {
    return codeFournisseur;
    }

    public void setCodeFournisseur(String codeFournisseur) {
    package bean;^M
    ^M
    import java.sql.Connection;^M
    import java.sql.PreparedStatement;^M
    import java.sql.ResultSet;^M
    import java.sql.SQLException;^M
    import java.sql.Statement;^M
    import java.util.Vector;^M
    ^M
    public class Produit {^M
    ^M
    private Integer codeProduit;^M
    private String nomProduit;^M
    private String codeTypeProduit;^M
    private String reference;^M
    private String codeClient;^M
    private String codeFournisseur;^M
    private String codeTypeLigne;^M
    private String remarque;^M
    ^M
    private static Connection cnx;^M
    private static PreparedStatement pstm;^M
    private static String requete;^M
    La ligne 84 corresponds a ça (celle du milieu System.out ..." :

    } catch (Exception e) {
    System.out.println("Problème de requête " + e.getMessage());
    marche = false;
    }

  12. #12
    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
    Alors là, je ne sais pas d'où vient ce source mais il est sacrément mélangé !
    En plus, je ne vois pas la méthode rechercherProduit

    Tu es sûr d'avoir tout copié ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 28
    Par défaut
    Effectivement, je penses que là ça sera mieux :

    package bean;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Vector;

    public class Produit {

    private Integer codeProduit;
    private String nomProduit;
    private String codeTypeProduit;
    private String reference;
    private String codeClient;
    private String codeFournisseur;
    private String codeTypeLigne;
    private String remarque;

    private static Connection cnx;
    private static PreparedStatement pstm;
    private static String requete;

    public boolean ajouterProduit() throws SQLException {

    boolean marche = true;

    try {
    // ouvre la connexion si elle n'est pas déjà ouverte
    cnx = Connexion.getCnx();
    // instruction SQL pour ajouter un produit
    requete = "CALL AJOUTPRODUIT (?,?,?,?,?,?,?)";
    // ajoute la requête à l'objet capable de contenir des requêtes
    pstm = cnx.prepareStatement(requete);
    // on remplit la requête avec les valeurs passées
    pstm.setString(1, this.getNomProduit());
    pstm.setString(2, this.getCodeTypeProduit());
    pstm.setString(3, this.getReference());
    pstm.setString(4, this.getCodeClient());
    pstm.setString(5, this.getCodeFournisseur());
    pstm.setString(6, this.getCodeTypeLigne());
    pstm.setString(7, this.getRemarque());
    // on execute la requête
    pstm.execute();
    pstm.close();
    cnx.close();
    } catch (Exception e) {
    System.out.println("Problème de requête " + e.getMessage());
    marche = false;
    }

    return marche;
    }

    public static Vector<Produit> rechercherProduit(String nomProduit, String nomTypeProduit, String reference, String nomClient,
    String nomFournisseur, String nomTypeLigne) throws Exception {

    Vector<Produit> v = null;
    Statement rqt = null;
    ResultSet rs = null;

    if (nomProduit == null){
    nomProduit = "";
    }
    if (nomTypeProduit == null){
    nomTypeProduit = "";
    }
    if (reference == null){
    reference = "";
    }
    if (nomClient == null){
    nomClient = "";
    }
    if (nomFournisseur == null){
    nomFournisseur = "";
    }
    if (nomTypeLigne == null){
    nomTypeLigne = "";
    }

    try {
    cnx = Connexion.getCnx();
    rqt = cnx.createStatement();
    rs = rqt.executeQuery("SELECT * FROM PRODUITS,TYPESPRODUITS,CLIENTS,FOURNISSEURS,TYPESLIGNES "+
    "WHERE PRODUITS.CodeTypeProduit=TYPESPRODUITS.CodeTypeProduit AND PRODUITS.CodeClient=CLIENTS.CodeClient "+
    "AND PRODUITS.CodeFournisseur=FOURNISSEURS.CodeFournisseur "+
    "AND PRODUITS.CodeTypeLigne=TYPESLIGNES.CodeTypeLigne "+
    "AND NomProduit LIKE '%"+nomProduit+"%' AND NomTypeProduit LIKE '%"+nomTypeProduit+"%' "+
    "AND Reference LIKE '%"+reference+"%' AND NomClient LIKE '%"+nomClient+"%' "+
    "AND NomFournisseur LIKE '%"+nomFournisseur+"%' AND NomTypeLigne LIKE '%"+nomTypeLigne+"%' "+
    "ORDER BY NomProduit");
    Produit p = null;
    v = new Vector<Produit>();
    while (rs.next()){
    p = new Produit(rs.getInt("CodeProduit"), rs.getString("NomProduit"), rs.getString("PRODUITS.CodeTypeProduit"),
    rs.getString("Reference"), rs.getString("PRODUITS.CodeClient"), rs.getString("PRODUITS.CodeFournisseur"),
    rs.getString("PRODUITS.CodeTypeLigne"), rs.getString("Remarque"));
    v.add(p);
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }finally {
    try {
    if (rs != null) rs.close();
    if (rqt != null) rqt.close();
    if (cnx != null) cnx.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    return v;
    }

    public boolean modifierProduit(){

    boolean marche = true;

    try {
    // ouvre la connexion si elle n'est pas déjà ouverte
    cnx = Connexion.getCnx();
    // instruction SQL pour modifier un produit
    requete = "CALL MODIFICATIONPRODUIT (?,?,?,?,?,?,?,?)";
    // ajoute la requête à l'objet capable de contenir des requêtes
    pstm = cnx.prepareStatement(requete);
    // on remplit la requête avec les valeurs passées
    pstm.setString(1, this.getNomProduit());
    pstm.setString(2, this.getReference());
    pstm.setString(3, this.getCodeTypeProduit());
    pstm.setString(4, this.getCodeClient());
    pstm.setString(5, this.getCodeFournisseur());
    pstm.setString(6, this.getCodeTypeLigne());
    pstm.setString(7, this.getRemarque());
    pstm.setInt(8, this.getCodeProduit());
    // on execute la requête
    pstm.execute();
    pstm.close();
    cnx.close();
    } catch (Exception e) {
    System.out.println("Problème de requête " + e.getMessage());
    marche = false;
    }

    return marche;
    }

    public boolean supprimerProduit() throws SQLException {

    boolean marche = true;

    try {
    // ouvre la connexion si elle n'est pas déjà ouverte
    cnx = Connexion.getCnx();
    // instruction SQL pour supprimer un produit
    requete = "CALL SUPPRESSIONPRODUIT(?)";
    // ajoute la requête à l'objet capable de contenir des requêtes
    pstm = cnx.prepareStatement(requete);
    // on remplit la requête avec les valeurs passées
    pstm.setInt(1, this.getCodeProduit());
    // on execute la requête
    pstm.execute();
    pstm.close();
    cnx.close();
    } catch (Exception e) {
    System.out.println("Problème de requête " + e.getMessage());
    marche = false;
    }

    return marche;
    }


    public Produit() {
    super();
    }

    public Produit(Integer codeProduit, String nomProduit, String codeTypeProduit, String reference,
    String codeClient, String codeFournisseur, String codeTypeLigne, String remarque) {
    this.codeProduit = codeProduit;
    this.nomProduit = nomProduit;
    this.codeTypeProduit = codeTypeProduit;
    this.reference = reference;
    this.codeClient = codeClient;
    this.codeFournisseur = codeFournisseur;
    this.codeTypeLigne = codeTypeLigne;
    this.remarque = remarque;
    }


    public Integer getCodeProduit() {
    return codeProduit;
    }

    public void setCodeProduit(Integer codeProduit) {
    this.codeProduit = codeProduit;
    }

    public String getNomProduit() {
    return nomProduit;
    }

    public void setNomProduit(String nomProduit) {
    this.nomProduit = nomProduit;
    }

    public String getCodeTypeProduit() {
    return codeTypeProduit;
    }

    public void setCodeTypeProduit(String codeTypeProduit) {
    this.codeTypeProduit = codeTypeProduit;
    }

    public String getReference() {
    return reference;
    }

    public void setReference(String reference) {
    this.reference = reference;
    }

    public String getCodeClient() {
    return codeClient;
    }

    public void setCodeClient(String codeClient) {
    this.codeClient = codeClient;
    }

    public String getCodeFournisseur() {
    return codeFournisseur;
    }

    public void setCodeFournisseur(String codeFournisseur) {
    this.codeFournisseur = codeFournisseur;
    }

    public String getCodeTypeLigne() {
    return codeTypeLigne;
    }

    public void setCodeTypeLigne(String codeTypeLigne) {
    this.codeTypeLigne = codeTypeLigne;
    }

    public String getRemarque() {
    return remarque;
    }

    public void setRemarque(String remarque) {
    this.remarque = remarque;
    }


    }
    Du coup la ligne 84 ressemble plus a ça :

    rqt = cnx.createStatement();
    PS : A noter que ça ce n'est qu'une partie, de l'appli, suivant ce que je veux faire, j'ai différentes erreurs ... Je vous fais des screens pour que ce soit plus compréhensible.

    Merci à vous !

    EDIT :

    Alors voilà comment se présente mon appli :



    Donc quand je click sur "Produit" j'ai le message que j'avais copié au départ c'est à dire :



    Mais quand par exemple je click sur la rubrique suivante, "Clients" j'ai ceci :



    On voit bien que du coup l'erreur ne concerne pas le même fichier (Client.java:59) ... Et ainsi de suite pour toute les rubriques ...

    Donc je me demande si le code n'est pas entièrement foireux !!

  14. #14
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    La variable cnx est probablement à null. La valeur de cette variable est retourné par l'appel à la méthode statique Connexion.getCnx().

    Ce qui explique que l'appel à une méthode de Client pose aussi problème.

    Je parie que la ligne 59 de Client.java correspond à l'utilisation d'une valeur retournée par Connexion.getCnx.

    Je te propose de vérifier les paramètres de la connexion à la base de données.

  15. #15
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 28
    Par défaut
    Effectivement je viens de vérifier et la ligne 59 de Client.java corresponds a ça :

    rqt = cnx.createStatement();
    Juste au dessus nous avons :

    cnx = Connexion.getCnx();
    Tu as donc raison !!

    Je te propose de vérifier les paramètres de la connexion à la base de données.
    Pas de soucis, des pistes pour moi, faut que je regarde ou dans un premier temps ??

    Merci à vous, le problème est identifié !

  16. #16
    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
    Le plus simple serait de montrer le code de la classe Connexion
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 28
    Par défaut
    Voici le Connexion.Java :

    package bean;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;

    public class Connexion {

    /** **************** attribut de connexion *********** */
    private static Connection cnx;

    /** **************** création du constructeur privé qui ne sert qu'à éviter d'instancier */
    public Connexion() {

    }

    /** **************** méthodes d'accés @throws Exception ****************/
    public static Connection getCnx() throws Exception {
    String nomDriver = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://192.168.1.117:3306/qdontech?user=root&password=DENIS";
    cnx = null;

    try {
    // Ici chargement du driver et connexion à la bdd
    Class.forName(nomDriver);
    cnx = DriverManager.getConnection(url);
    }
    catch (ClassNotFoundException e){
    System.out.println("Pilote JDBC invalide ou introuvable");
    }
    catch (SQLException e) {
    System.out.println("Erreur de connexion à la base de données \n" + e.getMessage());
    }
    return cnx;
    }

    }
    Deux choses importantes, lorsque je copie/colle dans la barre d'URL de mon navigateur ceci (trouvé dans le Connexion.java) :

    "http://192.168.1.117:3306/qdontech", j'ai un joli "La connexion a échoué" !

    Je sais que le port 3306 correspond a un port de MySQL, et qdontech est le nom de la BDD ! A noté aussi que l'utilisateur "root/DENIS" n'existe pas ... ça marche forcement moins bien Mais avant de passer a l'util même le http://192.168.1.117:3306/ ne réponds pas ... mon MySQL n'écoute pas sur ce port ??

    Voilà, ais-je raté quelque chose ??

    A savoir aussi, que je n'ai absolument pas fait de lien entre MySQL et Tomcat ...

    Merci à vous !

  18. #18
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Cette classe est un cas d'école de mauvaises pratiques.

    L'IP 192.168.1.117 correspond-t-elle à l'adresse du serveur mySql ou est-ce celle du PC du stagiaire?

    Je conseille si possible de réécrire cette classe en respectant certains points:
    • Les paramètres pour accéder à la base de données sont "à mettre à l'extérieur".
    • De ne pas créer une connexion à chaque appel mais d'utiliser un "pool" de connexions.

  19. #19
    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
    Bon, il faut bien reconnaître que d'avoir mis en dur l'adresse IP du serveur ainsi que l'utilisateur/mot de passe n'était pas une idée géniale !

    Pour le problème proprement dit, il faut dans un premier temps déterminer l'adresse du serveur MySQL, pour ça, le plus simple est d'aller sur le serveur et de taper dans un interpréteur de commande ifconfig (linux) ou ipconfig (windows). Ça donnera l'IP.
    Pour le port je ne sais pas trop pour linux mais pour windows, il faudrait regarder dans my.ini dans le répertoire d'installation du serveur.

    Après, pour l'utilisateur/mot de passe, il faut trouver le bon... voir ceux qui sont définis, mais là, il faut voir avec un admin.

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  20. #20
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 28
    Par défaut
    Citation Envoyé par jowo Voir le message
    Cette classe est un cas d'école de mauvaises pratiques.

    L'IP 192.168.1.117 correspond-t-elle à l'adresse du serveur mySql ou est-ce celle du PC du stagiaire?

    Je conseille si possible de réécrire cette classe en respectant certains points:
    • Les paramètres pour accéder à la base de données sont "à mettre à l'extérieur".
    • De ne pas créer une connexion à chaque appel mais d'utiliser un "pool" de connexions.
    Oui oui c'est bien l'IP du serveur ...

    Pour le reste de ta réponse, je ne comprends pas trop ... Tu veux dire qu'il ne faut pas mettre le login/pass en clair dans ce fichier ??

    Pour le Pool ... heu .. ^^

    Bon, il faut bien reconnaître que d'avoir mis en dur l'adresse IP du serveur ainsi que l'utilisateur/mot de passe n'était pas une idée géniale !

    Pour le problème proprement dit, il faut dans un premier temps déterminer l'adresse du serveur MySQL, pour ça, le plus simple est d'aller sur le serveur et de taper dans un interpréteur de commande ifconfig (linux) ou ipconfig (windows). Ça donnera l'IP.
    Pour le port je ne sais pas trop pour linux mais pour windows, il faudrait regarder dans my.ini dans le répertoire d'installation du serveur.

    Après, pour l'utilisateur/mot de passe, il faut trouver le bon... voir ceux qui sont définis, mais là, il faut voir avec un admin.

    A+
    Pour le port je viens de regarder dans le fichier de conf de MySQL (sur une debian), et c'est bien le 3306 !

    Pour l'util je crois avoir trouvé le bon, je vous tiens au courant !

Discussions similaires

  1. [Conception] Problème avec l'écriture dans une BDD [Script de news]
    Par NeuroGen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 02/07/2006, 19h08
  2. Réponses: 3
    Dernier message: 29/04/2006, 11h58
  3. Réponses: 9
    Dernier message: 22/02/2006, 14h53
  4. Problème de mon appli sous windows 2000
    Par chourmo dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2006, 12h03
  5. Problème d'ajout multiples dans un BDD Access
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/05/2004, 13h34

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