Urgent!! Recuperer ImageIcon de mySQL

drizztoli Messages postés 30 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 26 mai 2005 - 21 mai 2003 à 17:33
drizztoli Messages postés 30 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 26 mai 2005 - 22 mai 2003 à 17:11
Bon alors c un rien complexe en fait....

Voila, j'ai un Label qui contient une ImageIcon (jusqu'ici rien d'anormal)...
J'aimerai deja stocker cette Image ds une Base de donnees mySQL en utilisant je pense un type BLOB (ou autre) , donc deja comment faire?????

Apres, je voudrais recuperer la photo de la BD et la reinserer ds un nveau JLabel... Donc la question est comment faire pour que j'ai ma photo qui s'affiche ds mon JLabel et non pas un truc du type javax.swing.ImageIcon@bfh2kj ....

Je sais pas si je suis clair, mais j'espere que qqu'un pourra m'aider tres vite...
MERCI

Oliv

11 réponses

cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
21 mai 2003 à 19:23
salut,
ben montre ton code paske la tu stockes le nom de la classe ou l adresse memoire de ton image !!!
Duss
0
drizztoli Messages postés 30 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 26 mai 2005
22 mai 2003 à 09:23
Alors j'ai mon label qui contient l'image (elle s'affiche parfaitement) et je fais:

ImageIcon ph = ((ImageIcon)(urlPhoto.getIcon()));

et apres je fais:

requete = "insert into elus (nom,prenom,etiquette,titre,photo,mail,tel,telec,port,region,departement,circonscription,canton,commune) values ('"+n+"','"+p+"','"+et+"','"+x+"','"+ph+"','"+m+"','"+t+"','"+tc+"','"+po+"','"+reg+"','"+dept+"','"+circ+"','"+cant+"','"+comm+"');";

et je lance un ResultSet qui fait l'insertion et ca rentre bien les valeurs.
Le champ de la BD pr ma photo est un BLOB.

Et apres une fois que je vx recuperer l'image sotckee, je fais:

String k = rs.getString("photo");
ImageIcon z = new ImageIcon(k);

et je recolle le "z" ds un label.

Franchement je sais pas, donc merci pr l'aide que tu pourras m'apporter
Oliv
0
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
22 mai 2003 à 09:52
salut,
regardes ici
ils t expliquent comment la stocker et la recupérer ;)
Duss
0
drizztoli Messages postés 30 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 26 mai 2005
22 mai 2003 à 10:38
Merci c sympa, mais le chti prob, c que l'image est pas stockee sur le disque, elle vient directement du presse papier (oui je sais c complique comme systeme, mais c une question de rapidite)

Je copie une image du presse papier directement sur le label et je vx la stocker dans la base...Ca marche qd meme ton idee???

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
22 mai 2003 à 10:48
ben normalement oui puisque tu la recupere depuis ton label
essayes ;)
Duss
0
drizztoli Messages postés 30 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 26 mai 2005
22 mai 2003 à 14:53
Alors je fais ca:
File f = new File("olivier.jpg");
FileInputStream fin = new FileInputStream(f);
BufferedInputStream buf = new BufferedInputStream (fin);
ByteArrayOutputStream out = new ByteArrayOutputStream();
int b;
while ((b = buf.read()) != -1){
out.write(b);

}
buf.close();
byte[] array = out.toByteArray();
out.close();
connexion.insertion("update elus set photo='"+array+"' where id = 1");

pour stocker la photo ds la base, le type de photo est BLOB. La requete lancee est:
update elus set photo='[B@e45076' where id=1;

Apres pr recuperer la photo je fais:ResultSet resultSet connexion.selection("select photo from elus where id 1");
try{
if (resultSet.next()){
InputStream inputStream = resultSet.getBinaryStream(1);
if (inputStream != null){
BufferedInputStream in = new BufferedInputStream(inputStream);
ByteArrayOutputStream out = new ByteArrayOutputStream();
int b;
while ((b = in.read()) != -1){
out.write(b);

}
in.close();
byte[] array = out.toByteArray();
out.close();
photo.setIcon(new ImageIcon(array));
}

Et y a toujours rien qui s'afficher ds mon label.
Une idee?
Merci de l'aide qd meme :o)
0
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
22 mai 2003 à 15:52
salut,
connexion.insertion("update elus set photo='"+new String(array)+"' where id = 1");
Duss
0
drizztoli Messages postés 30 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 26 mai 2005
22 mai 2003 à 16:12
Si je fais ca, y a ca qui me tombe dessus aussi :
Erreur à l'execution de la requête :
update elus set photo='?ÿ??
0
drizztoli Messages postés 30 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 26 mai 2005
22 mai 2003 à 16:22
Erreur à l'execution de la requête :
update elus set photo='?ÿ??
0
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
22 mai 2003 à 16:59
essayes de faire :
buf.close();
String array = out.toString();
out.close();
connexion.insertion("update elus set photo='"+array+"' where id = 1");
Duss
0
drizztoli Messages postés 30 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 26 mai 2005
22 mai 2003 à 17:11
Ca fait exactement la meme erreur, vu que a partir du moment ou un ' va se ballader ds la String, ca va planter la requete.
Je vois vraiment plus moi :(
D'autres idees??
Merci
Oliv
0
Rejoignez-nous