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 :

insérer dans la base de données depuis une servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Femme Profil pro
    Etudiante
    Inscrit en
    Avril 2012
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Avril 2012
    Messages : 203
    Points : 85
    Points
    85
    Par défaut insérer dans la base de données depuis une servlet
    Bonjour,

    je trouve un problème avec une Servlet qui fait les fonctions suivantes :
    1- insère un visiteur (formulaire rempli ) du site web
    2- donne la main au visiteur de choisir une image pour son profile
    3- insère cette image dans la base de donnée exactement dansl champs imageV de la ligne qui correspond au informations du visiteur déjà insérés

    en fait , la redirection entre les page se passe sans problème mais , quand je vérifie la base de donnée rien n'est inséré, ni les informations saisi dans le formulaire ni l'image

    j'ai vraiment besoin de votre aide

    voilà le code du servlet

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    package inscrip;
     
    import java.io.*;
     
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import bdd.Connexion;
     
    /**
     * Servlet implementation class Inscription
     */
    @WebServlet("/Inscription")
    public class Inscription extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
        /**
         * @see HttpServlet#HttpServlet()
         */
        public Inscription() {
            super();
            // TODO Auto-generated constructor stub
        }
     
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
     
    		PrintWriter out = response.getWriter();
     
    		out.print("<html><body><FORM enctype=\"multipart/form-data\" action=\"Profile.jsp\" method=\"get\">"
    				+ "<br><br><br><center><table border=\"0\" bgcolor=#ccFDDEE>"
    				+ "<tr><td colspan=\"2\" align=\"center\"><B>Télécharger une photo</B><center></td></tr>"
    				+"<tr><td colspan=\"2\" align=\"center\"> </td></tr>"
    			    +"<tr><td><b>Choisir un fichier:</b></td><td><INPUT NAME=\"file\" TYPE=\"file\"></td></tr>"
    				+"<tr><td colspan=\"2\" align=\"center\"></td></tr>"
    				+"<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"Send File\"></td></tr>"
    				+"</table></center></FORM></body></html>");
     
     
            Connexion cnx0 = new Connexion("bghayt_nsafer");
            Connexion cnx1 = new Connexion("bghayt_nsafer");
     
    		String nom = request.getParameter("nom");
    		String prenom = request.getParameter("prenom");
    		String mail = request.getParameter("email");
    		String pass = request.getParameter("pass");
    		String age = request.getParameter("age");
    		String sex = request.getParameter("sexe");
    		String tel = request.getParameter("tel");
    		String adr = request.getParameter("adresse");
    		String vil = request.getParameter("ville");
    		String profes = request.getParameter("prof");
    		String vivre = request.getParameter("vis");
    		String offrir = request.getParameter("offrir");
    		String sexInv = request.getParameter("inv");
    		String loisirs = request.getParameter("loisirs");
    		String expers = request.getParameter("exp");
     
    		try {
        		cnx0.insert_visiteur(nom, prenom, mail, pass, age, sex, tel ,adr , vil , profes, vivre, offrir, sexInv, loisirs, expers);
    			out.print("insertiooooooonn");
    		} catch (Exception e) {
    			out.print("<br>erreuuuuuuuuuuuuur "+e);
    		}
     
     
     
    		String saveFile="";
    		String contentType = request.getContentType();
    		if((contentType != null)&&(contentType.indexOf("multipart/form-data") >= 0)){
    					DataInputStream in = new DataInputStream(request.getInputStream());
    					int formDataLength = request.getContentLength();
    					byte dataBytes[] = new byte[formDataLength];
    					int byteRead = 0;
    					int totalBytesRead = 0;
    					while(totalBytesRead < formDataLength){
    					byteRead = in.read(dataBytes, totalBytesRead,formDataLength);
    					totalBytesRead += byteRead;
    		}
    		String file = new String(dataBytes);
    		saveFile = file.substring(file.indexOf("filename=\"") + 10);
    		saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
    		saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
    		int lastIndex = contentType.lastIndexOf("=");
    		String boundary = contentType.substring(lastIndex + 1,contentType.length());
    		int pos; 
    		pos = file.indexOf("filename=\"");
    		pos = file.indexOf("\n", pos) + 1;
    		pos = file.indexOf("\n", pos) + 1;
    		pos = file.indexOf("\n", pos) + 1;
    		int boundaryLocation = file.indexOf(boundary, pos) - 4;
    		int startPos = ((file.substring(0, pos)).getBytes()).length;
    		int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
    		File ff = new File(saveFile);
    		FileOutputStream fileOut = new FileOutputStream(ff);
    		fileOut.write(dataBytes, startPos, (endPos - startPos));
    		fileOut.flush();
    		fileOut.close();
     
    		try {
    				cnx1.miseAJour(" update `visiteur` set image='"+saveFile+"' where nomV = '"+nom+"' ");
     				out.print("insertioooooon");
    				} catch (Exception e) {
    				    out.print("<br>erreuuuuuuuuuuuuur "+e);
    			}
     
     
     
     
    		}
     
    	}
     
     
     
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    	}
     
    }

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    ya t-il tout de meme une insertion avant que celle soit vide, ou ya t-il une erreur?

    Eric

  3. #3
    Membre régulier
    Femme Profil pro
    Etudiante
    Inscrit en
    Avril 2012
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Avril 2012
    Messages : 203
    Points : 85
    Points
    85
    Par défaut
    lors de compilation aucune erreur n'est déclenchée , mais quand je vérifie la base de donnée aucune insertion n'est exécuté

  4. #4
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,

    Première remarque, pourquoi tu crées 2 objets de connexion ? Pourquoi ne pas utiliser le même ?

    Pourrait on voir cette classe Connexion ainsi que tes fonction d'insertions ?

    Cdt.

  5. #5
    Membre régulier
    Femme Profil pro
    Etudiante
    Inscrit en
    Avril 2012
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Avril 2012
    Messages : 203
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Nico02 Voir le message
    Salut,

    Pourrait on voir cette classe Connexion ainsi que tes fonction d'insertions ?

    Cdt.
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    package bdd;
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    import java.sql.*;
     
    /**
     *
     * @author You Rin
     */
     
     
    public class Connexion {
     
     
       private Connection con;
       private Statement st;
       protected ResultSet rs;
       String DB="bghayt_nsafer";
     
          //Constructeur
         public Connexion(String DB) {  
        	 String url="jdbc:mysql://localhost/"+DB;                         //Définition de l’URL de connexion
             try {
                       Class.forName("com.mysql.jdbc.Driver");                //Chargement du pilote JDBC
                       con = DriverManager.getConnection(url, "root", "rootroot");    //Etablissement de la connexion
                       st = con.createStatement();                           /*Afin d’accéder ou de modifier les informations contenues dans la base de données, 
                                                                              il convient d’utiliser un objet de type Statement. 
                                                                              Une instance de cet objet est retournée par cette méthode*/ 
             }  
            catch (ClassNotFoundException e) {
             System.err.println("Problème de pilote");
            }
            catch (SQLException c) {
             System.err.println("Base de données non trouvée ou requête incorrecte");
            }
       }
     
       public void lire(String req) {                         //Selectionner la Base de Données
    	   try {
    		   rs = st.executeQuery(req);
    		   } catch (SQLException e) {
    		   	// TODO Auto-generated catch block
    		   	e.printStackTrace(); 
    		    }
       }
     
       public void miseAJour(String req) {                   //Modifier la Base de Données
    	   try {
    			st.executeUpdate(req);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
       }
     
       public void insert_visiteur(String nomV, String prenomV, String emailV, String passwdV, String ageV, String sexeV,
    		   					   String telV, String addresseV, String villeV, String professionV,String vivreAvec, String offrireV, 
    		   					   String sexeInvite, String loisirsV, String experiencesV) {
    		try {
    			st.executeUpdate( "insert into visiteur(nomV, prenomV, emailV, passwdV, ageV, sexeV, "
    				                                	+ "telV ,addresseV, villeV, professionV, vivreAvec, offrireV"
    				                                	+ "sexeInvite, loisirsV, experiencesV) "
    					+ "values('"+nomV+"','"+prenomV+"','"+emailV+"','"+passwdV+"','"+ageV+"','"+sexeV+"' "
    					      + " '"+telV+"','"+addresseV+"','"+villeV+"', '"+professionV+"','"+vivreAvec+"','"+offrireV+"' "
    						  + " '"+sexeInvite+"','"+loisirsV+"','"+experiencesV+"' )" );
     
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
     
       public boolean suiv() {
    	   try {
    			return rs.next();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return false;
    		}
       }
     
       public void fermer(){                                 // Fermer le connexion
           try {
                con.close();
            } catch (SQLException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
             }
       }
     
       public ResultSet getrs(){
           return rs;	
       }
     
    }

  6. #6
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Déjà première remarque, la construction d'une grand chaîne de caractère par concaténation comme tu le fais c'est la mal. Ça bouffe énormément en ressource.

    Il faut utiliser un StringBuilder pour faire ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    StringBuilder sb = new StringBuilder("Bonjour");
    sb.append( var1 ).append( "toto" );
    sb.append( "tata" );
    --
     
    String result = sb.toString();
    Ensuite, lorsque que tu fais une requête SQL, il est préférable d'utiliser l'objet PreparedStatement pour exécuter ta requête. C'est plus robuste, plus rapide si tu exécutes souvent cette requête, et cela permet de paramétrer ta requête facilement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PreparedStatement pstmt = con.prepareStatement("UPDATE MaTable
                                         SET monChamp = ? WHERE id = ?");
    pstmt.setString(1, "toto");
    pstmt.setInt(2, 10);
     
    pstmt.execute();
    Chaque "?" représente un paramètre que tu précisera plus tard avec les méthode setXXX() où XXX représente le type de ta donnée (setString(), setIn() etc..)

    Cela permet surtout d'éviter les erreurs d'encodage et de typage.

    Tu ne fermes jamais tes connexions à la base, c'est mal

    Par contre je ne vois pas où est-ce que tu fais commit(), ça viens peut être de là

  7. #7
    Membre régulier
    Femme Profil pro
    Etudiante
    Inscrit en
    Avril 2012
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Avril 2012
    Messages : 203
    Points : 85
    Points
    85
    Par défaut
    Merci Nico por tes remarques ,

    Citation Envoyé par Nico02 Voir le message
    Par contre je ne vois pas où est-ce que tu fais commit(), ça viens peut être de là
    est ce que tu peux m'expliquer un peu plus à quoi sert le commit() et où je dois le mettre?

  8. #8
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Le commit sert à valider les changements dans ta base. Il est normalement fait automatiquement par défaut mais sait-on jamais, tu dis ne pas avoir d'erreur donc c'est une possibilité.

    Tu dois le mettre à la fin, une fois que tu as fais tes opérations, avant le close() (que tu n'as pas mis non plus ). Le tout dans un block try-catch ou try-with-resources .

    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
     
    Connection con = getConnection();
    PreparedStatement pstmt = con.prepareStatement("UPDATE MaTable
                                         SET monChamp = ? WHERE id = ?");
    try
    {
      pstmt.setString( 1, monChamp );
      pstmt.setInt( 2, id );
     
      pstmt.execute();
      con.commit();
    }
    catch( Exception ex )
    {
      ex.printStackTrace();
    }
    finally 
    {
      if( con!= null )
        con.close();
    }

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/09/2009, 15h24
  2. comment insérer dans la base de donnée à partir d'un formulaire?
    Par thevirgin dans le forum Accès aux données
    Réponses: 27
    Dernier message: 24/08/2009, 16h10
  3. Réponses: 2
    Dernier message: 11/05/2009, 16h11
  4. Réponses: 1
    Dernier message: 15/04/2009, 19h28
  5. [CKEditor] Insérer dans ma base, les données saisies à partir de FCKeditor
    Par remo dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 16/05/2007, 11h44

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