Vous êtes sur la page 1sur 5

Formations Alternance Pour les entreprises

Accueil > Cours > Développez des sites web avec Java EE > Lire et enregistrer des données en SQL

Développez des sites web avec Java EE

20 heures
 Difficile Licence

Mis à jour le 05/07/2021

 

Enregistrer
Lire et enregistrer des données en SQL  dans une base 
de données

 Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours ! 1. Travailler avec
JDBC et une base
Téléchargez le fichier audiodescription : Partie 5, Chapitre 2 de données

2. Lire et
Vous trouverez sous la vidéo les codes source du cours.
enregistrer des
données en SQL

3. Utiliser le modèle
DAO

4. Gérer ses erreurs


avec son DAO

 Quiz : Quiz 5
Codes source Winnovative PDF Tools Demo
Renseignez quelques entrées dans votre tables "noms" en exécutant des commandes ACCÉDER AU

SQL comme celle-ci (que vous pouvez adapter) depuis l'invite de commande MySQL : FORUM

sql

  
INSERT INTO noms(nom, prenom) VALUES("Dupont", "Jean");

La servlet Test.java joue pleinement son rôle de contrôleur. Elle appelle le modèle qui
lui renvoie un résultat, et le transmet à la vue :
java

package com.octest.servlets;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.octest.bdd.Noms;
import com.octest.beans.Utilisateur;

/**
* Servlet implementation class Test
*/
@WebServlet("/Test")
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;

public Test() {
super();
// TODO Auto-generated constructor stub
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) th


rows ServletException, IOException {
Noms tableNoms = new Noms();
request.setAttribute("utilisateurs", tableNoms.recupererUtilisateurs());
this.getServletContext().getRequestDispatcher("/WEB-INF/bonjour.jsp").forward
(request, response);
}

public void doPost( HttpServletRequest request, HttpServletResponse response ) th


rows ServletException, IOException {
Utilisateur utilisateur = new Utilisateur();
utilisateur.setNom(request.getParameter("nom"));
utilisateur.setPrenom(request.getParameter("prenom"));

Noms tableNoms = new Noms();


tableNoms.ajouterUtilisateur(utilisateur);

request.setAttribute("utilisateurs", tableNoms.recupererUtilisateurs());

this.getServletContext().getRequestDispatcher("/WEB-INF/bonjour.jsp").forward
(request, response);
}

Winnovative PDF Tools Demo


}

Notre Java Bean Utilisateur.java est très simple. Il définit qu'un utilisateur est constitué
d'un nom et d'un prénom et fournit des accesseurs et mutateurs :
java

package com.octest.beans;

public class Utilisateur {


private String nom;
private String prenom;

public String getNom() {


return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
}

La communication avec la base de données se fait avec la classe Noms.java de notre


modèle. C'est elle qui charge JDBC ici, se connecte à MySQL et envoie des requêtes
SQL :
java

package com.octest.bdd;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;

import com.octest.beans.Utilisateur;

public class Noms {


private Connection connexion;

public List<Utilisateur> recupererUtilisateurs() {


List<Utilisateur> utilisateurs = new ArrayList<Utilisateur>();
Statement statement = null;
ResultSet resultat = null;

loadDatabase();

try {
statement = connexion.createStatement();

// Exécution de la requête
resultat = statement.executeQuery("SELECT nom, prenom FROM noms;");

// Récupération des données


while (resultat.next()) {
String nom = resultat.getString("nom");
String prenom = resultat.getString("prenom");

Utilisateur utilisateur = new Utilisateur();


utilisateur.setNom(nom);
Winnovative PDF Tools Demo
utilisateur.setPrenom(prenom);

utilisateurs.add(utilisateur);
}
} catch (SQLException e) {
} finally {
// Fermeture de la connexion
try {
if (resultat != null)
resultat.close();
if (statement != null)
statement.close();
if (connexion != null)
connexion.close();
} catch (SQLException ignore) {
}
}

return utilisateurs;
}

private void loadDatabase() {


// Chargement du driver
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
}

try {
connexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/java
ee", "root", "");
} catch (SQLException e) {
e.printStackTrace();
}
}

public void ajouterUtilisateur(Utilisateur utilisateur) {


loadDatabase();

try {
PreparedStatement preparedStatement = connexion.prepareStatement("INSERT
INTO noms(nom, prenom) VALUES(?, ?);");
preparedStatement.setString(1, utilisateur.getNom());
preparedStatement.setString(2, utilisateur.getPrenom());

preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

Enfin, notre vue ne contient rien de nouveau. On y trouve un formulaire pour saisir des
données et une liste sous forme de boucles qui affiche le contenu de notre Java Bean :
jsp

<%@ page pageEncoding="UTF-8" %>


<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
</head>
<body>
<form method="post" action="bonjour">
<p>
<label for="nom">Nom : </label>
<input type="text" name="nom" id="nom" />
</p> Winnovative PDF Tools Demo
<p>
<label for="prenom">Prénom : </label>
<input type="text" name="prenom" id="prenom" />
</p>

<input type="submit" />


</form>

<ul>
<c:forEach var="utilisateur" items="${ utilisateurs }">
<li><c:out value="${ utilisateur.prenom }" /> <c:out value="${ utilisateu
r.nom }" /></li>
</c:forEach>
</ul>
</body>
</html>

TRAVAILLER AVEC JDBC ET UNE BASE


 UTILISER LE MODÈLE DAO 
DE DONNÉES

Le professeur
Mathieu Nebra
Entrepreneur à plein temps, auteur à plein temps et co-fondateur d'OpenClassrooms :o)
Winnovative PDF Tools Demo

Vous aimerez peut-être aussi