Hier j'ai créé une petite base access pour tester le jdbc. J'ai réussi (grâce au tutoriel) à me connecter dessus, à récupérer des données, à inserer des données, supprimer, et faire des mises à jour. Donc je suis assez satisfait mais j'ai un gros probleme (surement de logique) pour récupérer plusieurs enregistrement en meme temps.

Voici ce que j'ai fait hier. Je ne récupere qu'un seul enregistrement donc pas de soucis.

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
 
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
 
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import java.sql.*;
 
public class vaChercher extends HttpServlet implements Servlet {
 
 
	static Connection connexion;
	static ResultSet resultat;
	static String R;
	static String R2;
	static String R3;
	static String requete; 
 
 
 
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException {
			cherche(req,resp);
	}
 
 
 
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException {
			cherche(req,resp);
	}
 
 
	public void cherche(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
				//recup des parametres
				String nom = req.getParameter("nom");
 
				try{
					Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
					System.out.println("chargement du driver réussi");
				}
				catch(ClassNotFoundException exc){
					System.out.println("Erreur de chargement du pilote !");					
				}
				String url="jdbc:odbc:lru";
 
				try{
					Connection connexion = DriverManager.getConnection(url,"","");
					System.out.println("connexion réussie");
					requete = "select * from Famille where Nom_Famille = '" + nom + "'";
					Statement statement = connexion.createStatement();	
					resultat = statement.executeQuery(requete);
					while(resultat.next()) {
						R = resultat.getString("Nom_Famille");
						R2 = resultat.getString("prenom_pere");
						R3 = resultat.getString("prenom_mere");
						System.out.println("dans la famille " + R + ", le pere s'appelle " + R2 + " et la mere " + R3);
 
						HttpSession session = req.getSession();
						ServletContext context = getServletContext();
						System.out.println("session = "+session);
 
 
						//création du bean
						BeanNom mbean = new BeanNom();
						mbean.setNom(nom);
						mbean.setPrenomP(R2);
						mbean.setPrenomM(R3);
						mbean.setResu(resultat);
						System.out.println("mbean= "+mbean);
 
						session.setAttribute("mbean",mbean);
 
						context.getRequestDispatcher("recupFam.jsp").forward(req,resp);
					}
 
				}
				catch(SQLException exc){
					System.out.println("Erreur ! - " + exc.toString());
				}
			}
}
pas de soucis puisque je ne récupere qu'un seul enregistrement.

Maintenant si je change ma requete comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
"select * from Famille";
Je vais récupérer plusieurs enregistrements et je ne vois pas comment les envoyer à ma JSP pour l'affichage.

J'ai bien une petite idée mais je n'arrive pas à la mettre en place. Je pense qu'il ne faut pas récupérer les champs dans la servlet et les envoyer 1 par 1 dans la JSP, je pense qu'il faut plutot envoyer tout d'un bloc dans la JSP et faire ensuite une boucle pour l'affichage.
Suis je sur la bonne voie? si oui comment tout envoyer d'un bloc? Sinon comment dois-je m'y prendre?

Merci pour vos réponses ! C'est quand meme dur d'apprendre Java tout seul... (heuresement que vous etes là )