Correction EX08 CRUD aliments
Conditions d’achèvement
Pour gérer le CRUD complet de la table aliment en Java, vous pouvez créer une classe AlimentDAO qui implémente les opérations CRUD (Create, Read, Update, Delete) pour cette table. La structure de la table aliment semble inclure les champs id, nom, poids_moyen, calories, vitamines_C, type_id, et couleur_id.
Voici un exemple de la façon dont vous pourriez structurer cette classe :
import java.sql.*;
public class AlimentDAO {
private DatabaseConnection dbConnection;
public AlimentDAO(DatabaseConnection dbConnection) {
this.dbConnection = dbConnection;
}
// Create (Insert)
public boolean insertAliment(String nom, float poidsMoyen, int calories, float vitaminesC, Integer typeId, Integer couleurId) throws SQLException {
String sql = "INSERT INTO aliment (nom, poids_moyen, calories, vitamines_C, type_id, couleur_id) VALUES (?, ?, ?, ?, ?, ?)";
dbConnection.connect();
PreparedStatement statement = dbConnection.getJdbcConnection().prepareStatement(sql);
statement.setString(1, nom);
statement.setFloat(2, poidsMoyen);
statement.setInt(3, calories);
statement.setFloat(4, vitaminesC);
if (typeId != null) {
statement.setInt(5, typeId);
} else {
statement.setNull(5, Types.INTEGER);
}
if (couleurId != null) {
statement.setInt(6, couleurId);
} else {
statement.setNull(6, Types.INTEGER);
}
boolean rowInserted = statement.executeUpdate() > 0;
statement.close();
dbConnection.disconnect();
return rowInserted;
}
// Read (Select)
public ResultSet listAllAliments() throws SQLException {
String sql = "SELECT * FROM aliment";
dbConnection.connect();
Statement statement = dbConnection.getJdbcConnection().createStatement();
ResultSet resultSet = statement.executeQuery(sql);
// Note: The caller should handle closing the resultSet and disconnecting
return resultSet;
}
// Update
public boolean updateAliment(int id, String nom, float poidsMoyen, int calories, float vitaminesC, Integer typeId, Integer couleurId) throws SQLException {
String sql = "UPDATE aliment SET nom = ?, poids_moyen = ?, calories = ?, vitamines_C = ?, type_id = ?, couleur_id = ? WHERE id = ?";
dbConnection.connect();
PreparedStatement statement = dbConnection.getJdbcConnection().prepareStatement(sql);
statement.setString(1, nom);
statement.setFloat(2, poidsMoyen);
statement.setInt(3, calories);
statement.setFloat(4, vitaminesC);
if (typeId != null) {
statement.setInt(5, typeId);
} else {
statement.setNull(5, Types.INTEGER);
}
if (couleurId != null) {
statement.setInt(6, couleurId);
} else {
statement.setNull(6, Types.INTEGER);
}
statement.setInt(7, id);
boolean rowUpdated = statement.executeUpdate() > 0;
statement.close();
dbConnection.disconnect();
return rowUpdated;
}
// Delete
public boolean deleteAliment(int id) throws SQLException {
String sql = "DELETE FROM aliment WHERE id = ?";
dbConnection.connect();
PreparedStatement statement = dbConnection.getJdbcConnection().prepareStatement(sql);
statement.setInt(1, id);
boolean rowDeleted = statement.executeUpdate() > 0;
statement.close();
dbConnection.disconnect();
return rowDeleted;
}
}
Explications :
- Chaque méthode CRUD utilise
dbConnection.connect()pour établir la connexion etdbConnection.disconnect()pour la fermer après l'opération. - Les méthodes
insertAlimentetupdateAlimentprennent en compte les champs optionnelstype_idetcouleur_id. Si ces valeurs sontnull, elles sont insérées commeNULLdans la base de données. - La méthode
listAllAlimentsrenvoie unResultSetcontenant tous les aliments. La gestion de la fermeture duResultSetet de la déconnexion est laissée à l'appelant.
Utilisation :
Pour utiliser AlimentDAO, créez une instance de DatabaseConnection et passez-la à AlimentDAO
public class Main {
public static void main(String[] args) {
String jdbcURL = "jdbc:mysql://localhost:3306/yourdatabase";
String jdbcUsername = "root";
String jdbcPassword = "password";
DatabaseConnection dbConnection = new DatabaseConnection(jdbcURL, jdbcUsername, jdbcPassword);
AlimentDAO alimentDao = new AlimentDAO(dbConnection);
try {
// Utiliser alimentDao pour les opérations CRUD
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Modifié le: lundi 13 novembre 2023, 08:02