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 et dbConnection.disconnect() pour la fermer après l'opération.
  • Les méthodes insertAliment et updateAliment prennent en compte les champs optionnels type_id et couleur_id. Si ces valeurs sont null, elles sont insérées comme NULL dans la base de données.
  • La méthode listAllAliments renvoie un ResultSet contenant tous les aliments. La gestion de la fermeture du ResultSet et 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