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 d'insertion jsp/oracle


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Par défaut Problème d'insertion jsp/oracle
    Salut me voici de retour avec un autre problème!
    dans le cadre de l'application que je developpe j'ai une classe FormationInitiale dans laquelle j'ai ecri une methode pour faire une insertion dans ma base voici le code :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    import java.util.*;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.sql.Connection;
    import java.sql.SQLException;
     
    public  class FormationInitiale  
    {
    ... 
    	private Connexion conex;
            Connection con = conex.getConn();
    ...      
            public FormationInitiale()
            {
                this.NumFormation = 0;
                this.Diplome = "";
                this.Lieu = "";
                this.DateDiplome = null;
                this.Etablissement = "";
            }
     
            public void InsertFormationInitiale(String Diplome, String Lieu, Date Datediplome, String Etablissement) throws SQLException
            {
                try
                {
                    Statement stat = con.createStatement(); // Création et initialisation du statement.
                    int res;
     
                    //Requete d'ajout de la formation initiale
                    String req = "INSERT INTO FORMATIONINITIALE (DIPLOME, LIEU, DATEDIPLOME, ETABLISSEMENT)"+
                                    "VALUES("+Diplome+", "+DateDiplome+", "+Lieu+", "+Etablissement+");";
                    res = stat.executeUpdate(req);
                    con.commit();
                    System.out.println(res+" Insertion reussie!!");
                }
                catch(SQLException e)   {   e.printStackTrace();    }
            }
    ...       
    } //End Class FORMATIONINITIALE
    Avec cette methode je veux inseré des données provenant d'un formulare dont le code est ci après
    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
     
    <table width="100%" class="tbcamoufle" height="100%">
    <tr>
      <td class = "tdleft">Dipl&ocirc;me</td>
      <td class = "tdleft"><input name="diplome" type="text"  class="inputtext" /></td>
    </tr>
    <tr>
       <td class = "tdleft">Date d'obtention</td>
       <td><input name="datediplome" type="text" maxlength="50" class="inputdate" /></td>
    </tr>
    <tr>
       <td class = "tdleft">Lieu de formation </td>
       <td><input name="lieuformation" type="text" maxlength="50" class="inputtext" /></td>
     </tr>
     <tr>
       <td class = "tdleft">Etablissement de formation </td>
       <td><input name="etablissement" type="text" maxlength="50" class="inputtext" /></td>
    </tr>
    </table>
    sur la page de validation de ce formulaire j'ai :
    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
     
    <%@ page import="gestionformation.*" %>
    <%
       FormationInitiale fi = new FormationInitiale();
        Statement stat = con.createStatement(); // Création et initialisation du statement.
     
            //Données de la formation initiale
            String Diplome = request.getParameter("diplome");
            String DateDiplome = request.getParameter("datediplome");
            String LieuFormation = request.getParameter("lieuformation");
            String Etablissement = request.getParameter("etablissement");
     
            //Requete d'ajout de la formation initiale
            String req1 = "INSERT INTO FORMATIONINITIALE (DIPLOME, LIEU, DATEDIPLOME, ETABLISSEMENT)" +
                          " VALUES("+Diplome+", "+DateDiplome+", "+LieuFormation+", "+Etablissement+");";
            
            int insertReq1 = stat.executeUpdate(req1);*/
            
            fi.InsertFormationInitiale(Diplome, LieuFormation, stringToDate(DateDiplome, "dd/mm/aaaa"), Etablissement)
    %>
    La fonction stringToDate(String ladate, String leformat) me pertmet de convertir une chaine de caractère en date que trouvé sur le net. Lorsque j'execute j'ai cette erreur!
    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
     
    org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP
     
    Une erreur s'est produite à la ligne: 4 dans le fichier jsp: /ajoutagentvalid.jsp
    Erreur de servlet générée:
    C:\Documents and Settings\Léon SAMAKE\.netbeans\5.0\jakarta-tomcat-5.5.9_base\work\Catalina\localhost\GestionFormation\org\apache\jsp\ajoutagentvalid_jsp.java:127: cannot find symbol
    symbol  : method stringToDate(java.lang.String,java.lang.String)
    location: class org.apache.jsp.ajoutagentvalid_jsp
            fi.InsertFormationInitiale(Diplome, LieuFormation, stringToDate(DateDiplome, "dd/mm/aaaa"), Etablissement);
                                                               ^
    1 error
     
    	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
    	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
    	org.apache.jasper.compiler.AntCompiler.generateClass(AntCompiler.java:246)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
    	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
    JE ne vois pas ce qui cloche! Merci d'avance!

  2. #2
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Par défaut
    voici le code de la fonction Date stringToDate(String, String)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static Date stringToDate(String date, String format) throws Exception 
        {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.parse(date);
        }
    Elle se trouve dans une classe où je met toutes les petite fonction dont fje pourrai avoir besoin!

  3. #3
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Comme stringToDate est une méthode static, pour y faire appel, il faut mettre le nom de la classe dans laquelle elle se trouve devant, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomDeLaClasse.stringToDate(DateDiplome, "dd/mm/aaaa")

  4. #4
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Par défaut
    c vrai que j'avais oublié ça merci !
    maintenant il me pose ce 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
    18
    19
    20
    21
     
    org.apache.jasper.JasperException
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
     
     
    cause mère 
     
    java.lang.NullPointerException
    	gestionformation.FormationInitiale.<init>(FormationInitiale.java:25)
    	org.apache.jsp.ajoutagentvalid_jsp._jspService(ajoutagentvalid_jsp.java:84)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Quelle est la ligne 25 de ta classe FormationInitiale ? (d'après ta stacktrace, ça vient de cette ligbe là)
    A première vue, j'ai l'impression que le problème vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private Connexion conex;
    Connection con = conex.getConn();
    Ces 2 lignes sont executées à l'instanciation de ta classe, et conex est null à ce moment là (d'ailleurs, quand l'initialises-tu ?), donc conex.getConn() te lève une NullPointerException.

  6. #6
    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
    Une remarque en passant...
    Ta méthode d'insertion dans la base posera de sérieux problème...
    Il faut savoir aussi qu'une date, si tu fais de l'injection sql, doit être entre quotes, si tu n'as pas le format attendu par la db, ça plante, si tu ne passes pas de valeur, il faut mettre null etc...

    Tu devrais utiliser un preparedStatement, ça serait déjà beaucoup mieux.
    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
     
    String diplome = request.getParameter("diplome");
    String lieu = request.getParameter("lieuformation");
    String dateformation = request.getParameter("dateformation");
    String etablissement = request.getParameter("etablissement");
    java.sql.Date date = null;
    try
    {
       SimpleDateFormate sdf = new SimpleDateFormat("dd/MM/yyyy");
       date = new java.sql.Date(sdf.parse(dateformation).getTime());
    }
    catch (Exception e){}
     
    PreparedStatement pstmt = connection.prepareStatement("insert into FORMATIONINITIALE(DIPLOME, LIEU, DATEDIPLOME, ETABLISSEMENT) values(?, ?, ?, ?)");
    pstmt.setString(1, diplome);
    pstmt.setString(2, lieu);
    pstmt.setDate(3, date);
    pstmt.setString(4, etablissement);
    pstmt.execute();
    Quelque chose dans le genre...

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

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

Discussions similaires

  1. Problème d'insert data Oracle
    Par jelmouss dans le forum Oracle
    Réponses: 3
    Dernier message: 12/12/2014, 22h14
  2. Problème d'insertion dans une table sous oracle
    Par admcent dans le forum Administration
    Réponses: 4
    Dernier message: 24/10/2007, 13h58
  3. Problème de mise à jour jsp/oracle
    Par samil dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 21/08/2007, 14h07
  4. [Oracle] Problème d'insertion de ligne via JDBC
    Par Invité dans le forum JDBC
    Réponses: 3
    Dernier message: 17/07/2007, 12h21
  5. Réponses: 1
    Dernier message: 21/12/2006, 17h06

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