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.
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.
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.
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;
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
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; } }
Dans le Model :
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); }
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.
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;
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.
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 !!!
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; } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager