copie SAE papillon
This commit is contained in:
84
src/fr/iutfbleau/papillon/UtilisateurBD.java
Normal file
84
src/fr/iutfbleau/papillon/UtilisateurBD.java
Normal file
@@ -0,0 +1,84 @@
|
||||
package fr.iutfbleau.papillon;
|
||||
|
||||
import java.sql.*;
|
||||
|
||||
/**
|
||||
* La classe <code>UtilisateurBD</code> gère la table <b>utilisateur</b>
|
||||
* de la base de données.
|
||||
* <p>Elle permet de créer ou de récupérer un utilisateur à partir d’une clé locale,
|
||||
* et de lire un utilisateur complet via sa clé.</p>
|
||||
*
|
||||
* @version 1.0
|
||||
* @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
|
||||
*/
|
||||
public class UtilisateurBD {
|
||||
|
||||
/** Identifiant interne de l’utilisateur. */
|
||||
private static int id;
|
||||
|
||||
/**
|
||||
* Récupère ou crée un utilisateur en fonction de sa clé unique.
|
||||
*
|
||||
* @param cle la clé unique associée à l’utilisateur
|
||||
* @return l’identifiant de l’utilisateur correspondant
|
||||
* @throws SQLException si une erreur SQL survient
|
||||
*/
|
||||
public static int getOrCreateIdByKey(String cle) throws SQLException {
|
||||
Connection cnx = BaseDeDonnees.getConnexion();
|
||||
|
||||
// Vérifie si un utilisateur existe déjà avec cette clé
|
||||
String sqlSelect = "SELECT id FROM utilisateur WHERE cle = ?";
|
||||
PreparedStatement pstSelect = cnx.prepareStatement(sqlSelect);
|
||||
pstSelect.setString(1, cle);
|
||||
ResultSet rs = pstSelect.executeQuery();
|
||||
|
||||
if (rs.next()) {
|
||||
id = rs.getInt("id");
|
||||
} else {
|
||||
// Sinon on en crée un nouveau
|
||||
String sqlInsert = "INSERT INTO utilisateur (cle) VALUES (?)";
|
||||
PreparedStatement pstInsert = cnx.prepareStatement(sqlInsert, Statement.RETURN_GENERATED_KEYS);
|
||||
pstInsert.setString(1, cle);
|
||||
pstInsert.executeUpdate();
|
||||
|
||||
ResultSet keys = pstInsert.getGeneratedKeys();
|
||||
if (keys.next()) {
|
||||
id = keys.getInt(1);
|
||||
}
|
||||
|
||||
keys.close();
|
||||
pstInsert.close();
|
||||
}
|
||||
|
||||
rs.close();
|
||||
pstSelect.close();
|
||||
cnx.close();
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère un utilisateur complet à partir de sa clé.
|
||||
*
|
||||
* @param cle la clé unique de l’utilisateur
|
||||
* @return un objet {@link Utilisateur} si trouvé, sinon <code>null</code>
|
||||
* @throws SQLException si une erreur SQL survient
|
||||
*/
|
||||
public static Utilisateur findByKey(String cle) throws SQLException {
|
||||
Connection cnx = BaseDeDonnees.getConnexion();
|
||||
String sql = "SELECT id, cle FROM utilisateur WHERE cle = ?";
|
||||
PreparedStatement pst = cnx.prepareStatement(sql);
|
||||
pst.setString(1, cle);
|
||||
ResultSet rs = pst.executeQuery();
|
||||
|
||||
Utilisateur u = null;
|
||||
if (rs.next()) {
|
||||
u = new Utilisateur(rs.getInt("id"), rs.getString("cle"));
|
||||
}
|
||||
|
||||
rs.close();
|
||||
pst.close();
|
||||
cnx.close();
|
||||
return u;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user