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 :

Afficher plusieurs images d'une BDD MySql


Sujet :

Servlets/JSP Java

  1. #21
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Les images seront toujours des png? Parce que là t'auras aussi un problème. Sans parler du coût pour l'encodage et décodage de l'image. Ta base grossira vite et là tu perdras aussi côté performance.

  2. #22
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 106
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    En fait, je suis arrivé à afficher les autres images des autres colonnes, sauf pour la 2ème colonne. Je suis sur le problème. Dès que j'aurai trouvé la solution, je mettrai cette discussion à jour. En revanche, si vous avez une idée je suis preneur.

  3. #23
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 106
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Ca y est, j'y suis enfin arrivé ! J'ai modifié la requête et qql truc. Je vais commencer par mettre le DAOImpl :
    package DAO;
    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
     
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
     
    import com.mysql.jdbc.Blob;
    import com.mysql.jdbc.PreparedStatement;
     
    import Bean.Brackets;
    import ConnexionBDD.ConnexionBDD;
     
    //Ici, on fait du Objet Mapping Relationnel (ORM)
     
    public class BracketDaoImpl implements IBracketDao {
     
    	// ASSOCIATION DES 3 LABELS AVEC LE BOUTON "SEARCH"
    	@Override
    	public List<Brackets> bracketTotal(String area, String position, String elecroute, String bsolution1,
    			String refImg) {
     
    		List<Brackets> brack = new ArrayList<Brackets>();
     
    		Connection connection = ConnexionBDD.getConnection();
     
    		try {
     
    			PreparedStatement ps = (PreparedStatement) connection.prepareStatement(/*
    																					 * "SELECT area,position,elecroute,bsolution1,\r\n"
    																					 * + "bsolution2,bsolution3,\r\n" +
    																					 * " bsolution4,bsolution5\r\n" +
    																					 * "FROM brackets\r\n" +
    																					 * "WHERE area LIKE ? AND position LIKE ? AND elecroute LIKE ? AND bsolution1 LIKE ? LIMIT 100"
    																					 * );
    																					 */
     
    					"SELECT area,position,elecroute,bsolution1,img1.photoName as png1,img1.photo as img1, bsolution2, img2.photoName as png2,img2.photo as img2, bsolution3,img3.photoName as png3,img3.photo as img3, bsolution4, img4.photoName as png4,img4.photo as img4, bsolution5, img5.photoName as png5,img5.photo as img5"
    							+ " FROM brackets "
    							+ " LEFT OUTER JOIN brackets_images as img1 on brackets.bsolution1=img1.refImg"
    							+ " LEFT OUTER JOIN brackets_images as img2 on brackets.bsolution2=img2.refImg"
    							+ " LEFT OUTER JOIN brackets_images as img3 on brackets.bsolution3=img3.refImg"
    							+ " LEFT OUTER JOIN brackets_images as img4 on brackets.bsolution4=img4.refImg"
    							+ " LEFT OUTER JOIN brackets_images as img5 on brackets.bsolution5=img5.refImg"
    							+ " WHERE area LIKE ? AND position LIKE ? AND elecroute LIKE ? AND brackets.bsolution1 LIKE ? AND img1.refImg LIKE ?");
     
    			ps.setString(1, area);
    			ps.setString(2, position);
    			ps.setString(3, elecroute);
    			ps.setString(4, bsolution1);
    			ps.setString(5, refImg);
     
    			ResultSet rs = ps.executeQuery();
    			while (rs.next()) {
    				// ORM
    				Brackets b = new Brackets();
    				b.setArea(rs.getString("area"));
    				b.setPosition(rs.getString("position"));
    				b.setElecroute(rs.getString("elecroute"));
    				b.setBsolution1(rs.getString("bsolution1"));
    				b.setBsolution2(rs.getString("bsolution2"));
    				b.setBsolution3(rs.getString("bsolution3"));
    				b.setBsolution4(rs.getString("bsolution4"));
    				b.setBsolution5(rs.getString("bsolution5"));
     
    				brack.add(b);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
    		return brack;
     
    	}
     
    	@Override
    	public java.sql.Blob affImg(String param) {
     
    		Connection connection = ConnexionBDD.getConnection();
    		Blob blob = null;
     
    		try {
    			PreparedStatement ps = (PreparedStatement) connection
    					.prepareStatement("SELECT photo FROM brackets_images WHERE refImg = ?");
     
    			ps.setString(1, param);
     
    			ResultSet rs = ps.executeQuery();
    			while (rs.next()) {
     
    				blob = (Blob) rs.getBlob("photo");
     
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
    		return blob;
    	}
     
    }
    Partie Servlet, il me semble que j'ai rien modifié mais je le remet au cas ou :
    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
    else if (path.equals("/image")) {
     
    			String uri = request.getRequestURI();
    			int index = uri.lastIndexOf("/");
    			String imageName = uri.substring(index + 1, uri.length());
     
    			try {
     
    				Blob imageEnBdds = metier.affImg(imageName); /* La méthode pr l'affichage des images est de type Blob */
     
    				if (imageEnBdds.length() >= 1) {
     
    					byte[] imageData = imageEnBdds.getBytes(1, (int) imageEnBdds.length());
    					/*
    					 * Ci-dessous, rajout pr test affichage colonne 2 pour img2 ----------> Ca
    					 * fontionne pas , même img1 n'est plus affiché
    					 */
    					/* byte[] imageData2 = imageEnBdds.getBytes(2, (int) imageEnBdds.length()); */
     
    					response.setContentType("image/png");
    					OutputStream o = response.getOutputStream();
    					o.write(imageData);
    					o.flush();
    					o.close();
     
    				}
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			System.out.println(imageName);
    		}
    Dans le Model :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private String motCleArea;
    	private String motClePosition;
    	private String motCleElecRoute;
    	private String motCleBsolution1;
    	private String bsolution1refImg;
     
    	private String total = motCleArea + motClePosition + motCleElecRoute + motCleBsolution1 + bsolution1refImg;
    Coté affichage, ca filtre bien et ca m'affiche bien ce que je veux. J'ai vérifié cela sur PhpMyAdmin dans la rubrique SQL où on peut taper ces requêtes.
    Nom : AffichageAppli.png
Affichages : 198
Taille : 297,9 Ko

    Il me reste plus qu'à remplacer là où il n'y a pas d'image par une image d'un seul pixel que j'ai et après tout sera bon. Pour les autres parties qu'il faut que j'affiche aussi (partsRef pr chque Bsolution), je vais la mettre sur la partie droite de mon application. En fait, cette partie l'utilisateur final n'aura pas besoin de la voir, c'est juste qu'il me faut ces infos pour le fichier XML que je dois produire à la fin.
    En espérant que ce post en aideront certains.

  4. #24
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 106
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Bonjour à tous. Est ce que quelqu'un aurait une idée pour annuler 2-3 requêtes sur PhpMyAdmin car j'ai voulu faire un update sur une colonne de ma BDD, mais au final j'ai oublié la clause WHERE, du coup ca m'a tout remplacé (j'aurai voulu juste remplacer les valeurs nules) ?
    J'ai effectué des recherches sur google, mais d'après ce que j'ai vu, on peut annuler des requêtes avec seulement des TRANSACTIONS. Or, je n'ai pas utilisé ça !!!

  5. #25
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 106
    Points : 27
    Points
    27
    Par défaut Réponse aux commentaires
    Bon j'ai réussi à afficher les images. Merci à vous pour vos implications. Je mets le code et je mets aussi cette discussion en résolu.
    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 DAO;
     
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
     
    import com.mysql.jdbc.Blob;
    import com.mysql.jdbc.PreparedStatement;
     
    import Bean.Brackets;
    import ConnexionBDD.ConnexionBDD;
     
    //Ici, on fait du Objet Mapping Relationnel (ORM)
     
    public class BracketDaoImpl implements IBracketDao {
     
    	// ASSOCIATION DES 3 LABELS AVEC LE BOUTON "SEARCH"
    	@Override
    	public List<Brackets> bracketTotal(String area, String position, String elecroute, String bsolution1,
    			String refImg) {
     
    		List<Brackets> brack = new ArrayList<Brackets>();
     
    		Connection connection = ConnexionBDD.getConnection();
     
    		try {
     
    			PreparedStatement ps = (PreparedStatement) connection.prepareStatement(/*
    																					 * "SELECT area,position,elecroute,bsolution1,\r\n"
    																					 * + "bsolution2,bsolution3,\r\n" +
    																					 * " bsolution4,bsolution5\r\n" +
    																					 * "FROM brackets\r\n" +
    																					 * "WHERE area LIKE ? AND position LIKE ? AND elecroute LIKE ? AND bsolution1 LIKE ? LIMIT 100"
    																					 * );
    																					 */
     
    					"SELECT area,position,elecroute,bsolution1,img1.photoName as png1,img1.photo as img1, bsolution2, img2.photoName as png2,img2.photo as img2, bsolution3,img3.photoName as png3,img3.photo as img3, bsolution4, img4.photoName as png4,img4.photo as img4, bsolution5, img5.photoName as png5,img5.photo as img5"
    							+ " FROM brackets2 "
    							+ " LEFT OUTER JOIN brackets_images as img1 on brackets2.bsolution1=img1.refImg"
    							+ " LEFT OUTER JOIN brackets_images as img2 on brackets2.bsolution2=img2.refImg"
    							+ " LEFT OUTER JOIN brackets_images as img3 on brackets2.bsolution3=img3.refImg"
    							+ " LEFT OUTER JOIN brackets_images as img4 on brackets2.bsolution4=img4.refImg"
    							+ " LEFT OUTER JOIN brackets_images as img5 on brackets2.bsolution5=img5.refImg"
    							+ " WHERE area LIKE ? AND position LIKE ? AND elecroute LIKE ? AND brackets2.bsolution1 LIKE ? AND img1.refImg LIKE ?");
     
    			ps.setString(1, area);
    			ps.setString(2, position);
    			ps.setString(3, elecroute);
    			ps.setString(4, bsolution1);
    			ps.setString(5, refImg);
     
    			ResultSet rs = ps.executeQuery();
    			while (rs.next()) {
    				// ORM
    				Brackets b = new Brackets();
    				b.setArea(rs.getString("area"));
    				b.setPosition(rs.getString("position"));
    				b.setElecroute(rs.getString("elecroute"));
    				b.setBsolution1(rs.getString("bsolution1"));
    				b.setBsolution2(rs.getString("bsolution2"));
    				b.setBsolution3(rs.getString("bsolution3"));
    				b.setBsolution4(rs.getString("bsolution4"));
    				b.setBsolution5(rs.getString("bsolution5"));
     
    				brack.add(b);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
    		return brack;
     
    	}
     
    	@Override
    	public java.sql.Blob affImg(String param) {
     
    		Connection connection = ConnexionBDD.getConnection();
    		Blob blob = null;
     
    		try {
    			PreparedStatement ps = (PreparedStatement) connection
    					.prepareStatement("SELECT photo FROM brackets_images WHERE refImg = ?");
     
    			ps.setString(1, param);
     
    			ResultSet rs = ps.executeQuery();
    			while (rs.next()) {
     
    				blob = (Blob) rs.getBlob("photo");
     
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
    		return blob;
    	}
     
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Récupérer/Afficher images d'une BDD MySQL au survol d'un lien
    Par fredbubu65 dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 28/05/2018, 10h31
  2. [MySQL] Récupération d'une image dans une BDD mySQL
    Par jojojo84 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/12/2010, 16h34
  3. [Débutant] comment afficher plusieurs images dans une interface
    Par zakary dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 02/05/2009, 10h47
  4. [Débutant] comment afficher plusieurs images dans une seule interface ?
    Par youssa81 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 06/02/2009, 00h36
  5. Comment afficher plusieurs images depuis une BD en même temps ?
    Par thibouille dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/11/2007, 15h36

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