Sauvegarder image dans une base de donnees mysql [Résolu]

Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
15 mars 2013
- - Dernière réponse : cs_GodConan
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
- 9 sept. 2011 à 06:35
bonjour,
j'ai trouvé sur internet des gens qui parle de ca mais sur le web alors une application java avec mysql j'ai pas trouvé de bon chose
la question est bien le ttre du forum
merci
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
15 mars 2013
3
Merci
j'ai trouvé :
voila la classe dao pour sauvegardé et afficher l'image dans mysql :
public class imprimer_DAO extends DAO<client> {

public void sauveIMG(String location, String name) throws Exception
  {
    File monImage = new File(location);
    FileInputStream istreamImage = new FileInputStream(monImage);

    try
    {
    	PreparedStatement ps = this.connect.prepareStatement("delete from image");
    	ps.executeUpdate();
    	ps this.connect.prepareStatement("ALTER TABLE image AUTO_INCREMENT 0");
    	ps.executeUpdate();
       ps = this.connect.prepareStatement(
          "insert into image (img) values (?)");
      try
      {
        //ps.setString(1, name);
        ps.setBinaryStream(1, istreamImage, (int) monImage.length());
        ps.executeUpdate();
      }
      finally
      {
        ps.close();
      }
    }
    finally
    {
      istreamImage.close();
    }
  }

public Image afficher() throws Exception
  {
    
      PreparedStatement ps = this.connect.prepareStatement("select img from image ");
      try
      {
        ResultSet rs = ps.executeQuery();;
        Image img = null ;
        
          while(rs.next())
          {
            img = ImageIO.read(rs.getBinaryStream("img" ));
            
          }
          return img ;
    }catch(Exception e){
    	System.out.println("erreur chargement image");
    }
return null;
    
    
  }


}


merci

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de profiter
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
15 mars 2013
3
Merci
peux tu me donner qlq indication sur la facon de faire

merci

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de profiter
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
15 mars 2013
1
Merci
si c'est comme ca alors a votre avis comment faire une librairie specifique aux images
et le probleme a mon avis
c'est quand on va faire le setup et l'utiliser : si on veut enregistrer une image elle va augnenter de la taile de l'appli est ce que c'est possibble
si vous pouvez m'expliquer d'avantage cette methode merci bien
Commenter la réponse de profiter
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
1
Merci
Une librairie d'images, c'est juste un dossier qui contient tes images. Et non, ca n'augmentera pas la taille de l'appli plus que si tu les enregistrais dans une base de données.
Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
1
Merci
Je ne vois pas ce que je peux te dire de plus, tu enregistres tes images dans un dossier et dans la base de données, tu enregistres le path de la forme C:\images\image1.png
Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Bonjour,

La réponse est simple : ce n'est pas possible avec mySQL. D'autres SGBD le proposent (Oracle et postgresql) mais mySQL ne permet pas d'enregistrer des images.
Commenter la réponse de cs_Julien39
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
15 mars 2013
0
Merci
alors a ton avis
quelle est la solution
voila comment ca se passe
image = new imagepanel(Toolkit.getDefaultToolkit().getImage("images_icones/IMM.png"));
   image.setBorder(new BevelBorder(BevelBorder.RAISED, null, null, null, null));
image.setBounds(10, 50, 240, 155);
panel.add(image);



JButton logo = new JButton("Importer un LOGO");
logo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//JFileChooser choix = new JFileChooser();
int retour=choix.showOpenDialog(impression.this);
if(retour==JFileChooser.APPROVE_OPTION){				   			   image.setimage(Toolkit.getDefaultToolkit().getImage(""+choix.getSelectedFile().getAbsolutePath()));
//--------------------- ici je dois sauvegardé l'image qui se trouve dans cette endroit
// choix.getSelectedFile().getAbsolutePath()
}else  ;
}
});

qu'est ce que vous me proposez
je veux l'utiliser comme logo lors de l'impression des commandes

merci bien
Commenter la réponse de profiter
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
15 mars 2013
0
Merci
j'ai trouvé un tuto et un code source pour ca
voila le lien du source http://ricky81.ftp-developpez.com/tutoriel/java/jdbc/blob/sources.zip

et voila le lien du tuto :
http://ricky81.developpez.com/tutoriel/java/jdbc/blob/#L3.2

bref
ce code permet d'enregister une image dans la base de donnees mysql (et aussi postgresql )et l'extraire pour la sauvegardé a un endroit dans le disque dur

mais bon moi je veux l'extraire et la rendre en format image
si vous avez une idée

voici les morceau de code qui permet de sauvegarder et d'extraire l'image de la base :

public void sauveIMG(String location, String name) throws Exception
  {
    File monImage = new File(location);
    FileInputStream istreamImage = new FileInputStream(monImage);

    try
    {
      PreparedStatement ps = conn.prepareStatement(
          "insert into image (name, img) values (?,?)");
      try
      {
        ps.setString(1, name);
        ps.setBinaryStream(2, istreamImage, (int) monImage.length());
        ps.executeUpdate();
      }
      finally
      {
        ps.close();
      }
    }
    finally
    {
      istreamImage.close();
    }
  }


  public void chargeIMG(String name, String location) throws Exception
  {
    File monImage = new File(location);
    FileOutputStream ostreamImage = new FileOutputStream(monImage);

    try
    {
      PreparedStatement ps = conn.prepareStatement("select img from image where name=?");
      try
      {
        ps.setString(1,name);
        ResultSet rs = ps.executeQuery();;
        try
        {
          if(rs.next())
          {
            InputStream istreamImage = rs.getBinaryStream("img");

            byte[] buffer = new byte[1024];
            int length = 0;

            while((length = istreamImage.read(buffer)) != -1)
            {
              ostreamImage.write(buffer, 0, length);
            }
          }
    }
    finally
    {
  rs.close();
}
      }
      finally
      {
        ps.close();
      }
    }
    finally
    {
      ostreamImage.close();
    }
  }


merci
Commenter la réponse de profiter
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
0
Merci
salut... ;o)

ce qui serait interressant de connaitre c est la structure de la table ;o) ...
je pense que l on doit pouvoir sauvegarder l image dans un blob!! (jamais essayé)
la solution que j ai retenu est de faire faire une librairie d image et de ne sauvegarder que les reference de ces images dans la base... j avantage c est que la base est bcp moins volumineuse...



GodConan ;o)
Commenter la réponse de cs_GodConan
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
15 mars 2013
0
Merci
et si on veut que l'image doit etre importer par un utilisateur dans un poste apart le serveur et on veut qu'elle soit sauvegardé
je pense que ca ne va pas marché avec ca
Commenter la réponse de profiter
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
15 mars 2013
0
Merci
j avantage c est que la base est bcp moins volumineuse...


moi je n'enregistre qu'une seule image si l'utilisateur importe une autre la premiere sera ecrasé
don pas de volumineux
n'est ce pas
Commenter la réponse de profiter
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
@GodConan : je pensais que les types LOB n'étaient utilisables qu'avec Oracle ?

La solution de godConan : enregistrer les images dans une librairie et stocker dans la base de données les uri des images une une solution courante et qui fonctionne bien. Qui plus est avec une base de données mySQL qui n'est pas adaptée aux gros volumes de données.
Commenter la réponse de cs_Julien39
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
0
Merci
Tu peux stoker un chemin relatif ds ta base et utiliser un parametre path data dans ton appli ;o) ...

@Julien39 : ;o) ca fait qd meme lontemps ;o) que MySQL peu traiter de gros volume de données ;o) et les BLOB ;o) ... aprés la difference entre oracle ;o) et MySQL ;o) existe encore certe... ;o)



GodConan ;o)
Commenter la réponse de cs_GodConan

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.