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

JDBC Java Discussion :

sauvegarder dans une bdd mysql


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 76
    Points : 35
    Points
    35
    Par défaut sauvegarder dans une bdd mysql
    bonjour a tous ,
    j ai déjà poser se problème dans le forum , et avec votre aide voila ce que j ai fait:
    il s'agit de enregistrer un arraylist, pour çà j ai crée un table avec 3 champs
    ID , Nom , valeur (varbinary ).
    et 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
     
    * si on clique sur le bouton save
         if(e.getSource()==save)
    				  {//***********debut
    					    Connection connexion ;
    					    Statement stat ;
    					    ResultSet res ;
     
    						try
    						{
    							Class.forName("com.mysql.jdbc.Driver");
    							connexion = DriverManager.getConnection("jdbc:mysql://localhost/arrylist","root","");
    							stat = connexion.createStatement();
    							//******************************
     
    							ByteArrayOutputStream baos=null;
    							ObjectOutputStream oos=null;
    							byte[] data =null;
    							try {
    							    baos = new ByteArrayOutputStream();
    							    oos = new ObjectOutputStream(baos);
    							    oos.writeObject(list);//*** list est un Arraylist
    							     data = baos.toByteArray();
     
    							 sauver data dans la db
    							     stat.executeUpdate("INSERT INTO save (nom, val) VALUES('nom',"+data+")");
     
    							} catch (IOException ex) { ex.printStackTrace();} 
     
    						}
    						    catch (Exception ex) {
    							System.out.println("connexion impossible");
     
    						}
    				  }//******************************fin
    a l exécution c'est toujours connexion impossible ,
    alors qu'es que ne va pas
    et merci a vous

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Bonjour,

    Il faudrait avoir la trace complète de l'exception.

    Juste avant d'afficher le message connexion impossible, ajoute cette ligne dans le bloc catch
    Une remarque : ta base de données s'appelle arrylist et non arraylist ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 76
    Points : 35
    Points
    35
    Par défaut
    merci pour la réponse ,
    la base s'appelle bien arrylist et pas arraylist , en plus la connexion al bdd ca marche , car si j enlève l instruction executeUpdate ca n'affiche pas connexion impossible
    mais je que je voudrais savoir c est : es que le champ varbinary correspond a la variable byte[]

  4. #4
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Re,

    VARBINARY semble correct : http://dev.mysql.com/doc/refman/5.0/...nversions.html

    Pour la création de ta requête et le passage des paramètres, utilise plutôt un object de type PreparedStatement au lieu de Statement.

    Tu auras alors accès à la méthode setBytes.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 76
    Points : 35
    Points
    35
    Par défaut
    et comment j utilise setBytes() ?
    un petit exemple serai le bien venu

  6. #6
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Tu n'oserais pas me demander de faire le boulot à ta place, n'est-ce pas ?

    http://java.developpez.com/faq/jdbc/...paredstatement

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 76
    Points : 35
    Points
    35
    Par défaut
    voila ce que j ai fait avec preparedStatement mais ca ne marche toujour pas , et cette fois aucune erreurs afficher dans eclips , alors c quoi le probleme ,
    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
     
    	  if(e.getSource()==save)//** si on clique sur le bouton save
    				  {//***********debut
    					    Connection conn;
     
     
    						try
    						{
    							Class.forName("com.mysql.jdbc.Driver");
    							conn = DriverManager.getConnection("jdbc:mysql://localhost/arrylist","root","");
     
    							//******************************
     
    							ByteArrayOutputStream baos=null;
    							ObjectOutputStream oos=null;
    							byte[] data ;
     
    							try {
    							     baos = new ByteArrayOutputStream();
    							     oos = new ObjectOutputStream(baos);
    							     oos.writeObject(list);//*** list est un Arraylist
    							     data = baos.toByteArray();
     
    							     //sauver data "dans la db
    							     String query = "INSERT INTO save(nom ,val) VALUES ('exo', ? )";
    							     PreparedStatement pstm = conn.prepareStatement(query);
    							     pstm.setBytes(1, data);
     
     
    							} catch (IOException ex) { ex.printStackTrace();} 
     
    						}
    						    catch (Exception ex) {
    						    	ex.printStackTrace();
    							System.out.println("connexion impossible");
     
    						}
    				  }//******************************fin
    ca fait 2 semaines que je cherche a le faire sans succès

  8. #8
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Bonjour,

    Quand tu dis ça ne marche toujours pas, je suppose qu'il n'y a aucun enregistrement en base.

    Tu as essayé en appelant la méthode commit sur ton objet conn ?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 76
    Points : 35
    Points
    35
    Par défaut
    oui il n y a aucun enregistrement dans la base de données , mais dit moi es que ces instructions est correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       String query = "INSERT INTO save(nom ,val) VALUES ('exo', ? )";
    							     PreparedStatement pstm = conn.prepareStatement(query);
    							     pstm.setBytes(1, data);
    et es que il y aurais pas un executeupdate ou autre , car je peux écrire n’importe quoi dans la variable query il n y a pas d erreur détecté ,
    et merci a toi

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 76
    Points : 35
    Points
    35
    Par défaut
    enfin c'est bon j ai trouver la solution , il faut ajouter un executeUpdate , et pour les gens que ça intéressent voici le code pour sauvegarder un arraylist dans une base de données :
    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
    	  if(e.getSource()==save)//** si on clique sur le bouton save
    				  {//***********debut
    					    Connection conn;
     
     
    						try
    						{
    							Class.forName("com.mysql.jdbc.Driver");
    							conn = DriverManager.getConnection("jdbc:mysql://localhost/arrylist","root","");
     
    							//******************************
     
    							ByteArrayOutputStream baos=null;
    							ObjectOutputStream oos=null;
    							byte[] data ;
     
    							try {
    							     baos = new ByteArrayOutputStream();
    							     oos = new ObjectOutputStream(baos);
    							     oos.writeObject(list);//*** list est un Arraylist
    							     data = baos.toByteArray();
     
    							     //sauver data "dans la db
    							     String query = "INSERT INTO save(nom ,val) VALUES ('exo', ? )";
    							     PreparedStatement pstm = conn.prepareStatement(query);
    							     pstm.setBytes(1, data);
    							   pstm.executeUpdate();
     
    							} catch (IOException ex) { ex.printStackTrace();} 
     
    						}
    						    catch (Exception ex) {
    						    	ex.printStackTrace();
    							System.out.println("connexion impossible");
     
    						}
    				  }//******************************fin
    et pour le recuperer et le mettre dans l arraylist :
    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
    Connection conn;
    					Statement stm ;   
    					ResultSet res ; 
     
    					 byte[] d2 = null;
    					 ByteArrayInputStream bais;
    				     ObjectInputStream ois;
    						try
    						{
    							Class.forName("com.mysql.jdbc.Driver");
    							conn = DriverManager.getConnection("jdbc:mysql://localhost/arrylist","root","");
    							stm = conn.createStatement();
    							res  = stm.executeQuery("select val from save where id=13 ");
    							while(res.next()){
    								d2 =res.getBytes(1);
    							}
     
    							bais=  new ByteArrayInputStream(d2) ;
    							ois = new ObjectInputStream(bais);
    							list =(ArrayList<Fig>)ois.readObject();
    et surtout merci a toi nesmountou

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

Discussions similaires

  1. Sauvegarde de SMS dans une BDD MySQL
    Par AndroJex dans le forum Android
    Réponses: 8
    Dernier message: 02/07/2012, 20h04
  2. Sauvegarder une instance d'une classe Java dans une BDD MySQL
    Par malag dans le forum Administration
    Réponses: 1
    Dernier message: 03/09/2006, 19h23
  3. Sauvegarder dans une bdd
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 01/06/2006, 12h09
  4. inserer des photos dans une bdd mysql
    Par oceane751 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/05/2006, 20h06
  5. Changements de colonnes dans une BDD MySQL
    Par arnaud_verlaine dans le forum Requêtes
    Réponses: 8
    Dernier message: 07/08/2003, 11h33

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