Bonjour,
J'essaye de créer un bouton qui permet d’exécuter une requête SQL automatiquement qui me permet d'inserer une nouvelle ligne dans la table Participation mais je n'y arrive pas, donc pouvez vous m'aider à résoudre cette solution ?
Fichier DAOHackathon.java
Code:package fr.siocoliniere.dal.jdbc; import fr.siocoliniere.bo.Hackathon; import fr.siocoliniere.bo.Member; import fr.siocoliniere.dal.DALException; import fr.siocoliniere.dal.DAO; import java.sql.*; import java.util.ArrayList; import java.util.List; /** * Classe DAOHackathon * Implémente la classe abstraite DAO * BD : Table Hackathon */ public class DAOHackathon extends DAO<Hackathon> { /** * PATTERN SINGLETON : contraint l'instanciation d'une UNIQUE instance de classe */ private static DAOHackathon instanceDAOHackathon; private Hackathon obj; /** * Pattern Singleton * @return DAOHackathon */ public static synchronized DAOHackathon getInstance() { if (instanceDAOHackathon == null) { instanceDAOHackathon = new DAOHackathon(); } return instanceDAOHackathon; } /** * REQUETES */ private static final String sqlSelectIdByName= "select hackathon.id from hackathon where hackathon.name = ?"; private static final String sqlSelectAll = "select hackathon.id, hackathon.name, hackathon.topic, hackathon.description from hackathon"; private static final String sqlSelectOneById = "select hackathon.id, hackathon.name, hackathon.topic, hackathon.description from hackathon where hackathon.id = ?"; private static final String sqlUpdateOne = "update hackathon set name = ?, topic = ?, description = ? where id = ?"; private static final String sqlInsertOne = "insert into hackathon(name,topic, description) values (?,?,?)"; private static final String sqlInsertJuryMember = "insert into participation(hackathonid,memberid,roleid) values (?,?,1)"; private static final String sqlDeleteAllJuryMember = "delete from participation where hackathonid = ? and roleid = 1"; private static final String sqlInsertMember = "insert into member(firstname, lastname, mail,telephone,portfolio,motdepasse) values (?,?,?,?,?,?)"; private static final String sqlInsertJuryRole = "insert into participation(hackathonid,memberid,roleid) values (?,(select MAX(id) from member),1)"; /** * Permet de supprimer la composition du jury du hackathon * @param hackid : id du hackathon * @throws DALException */ public void deleteAllParticipationJuryOfHackathon(int hackid) throws DALException { try { Connection cnx = JdbcTools.getConnection(); PreparedStatement rqt = cnx.prepareStatement(sqlDeleteAllJuryMember); rqt.setInt(1, hackid); rqt.executeUpdate(); rqt.close(); } catch (SQLException e) { throw new DALException(e.getMessage(),e); } } /** * Permet de récupérer l'id d'un hackathon connaissant le nom (contrainte d'unicité sur le nom) * @param name : nom du hackathon recherché * @return id du hackathon * @throws DALException */ public Integer getIdByName(String name) throws DALException { Integer hackid = null; try { Connection cnx = JdbcTools.getConnection(); PreparedStatement rqt = cnx.prepareStatement(sqlSelectIdByName); rqt.setString(1,name); ResultSet rs = rqt.executeQuery(); while (rs.next()) { //instanciation du hackathon hackid=rs.getInt("id"); } rqt.close(); } catch (SQLException e) { //Exception personnalisée throw new DALException(e.getMessage(),e); } return hackid ; } /** * Permet de récupérer un hackathon à partir de son id * @param id du hackathon * @return le hackathon dont l'id est transmis en paramètre * @throws DALException */ @Override public Hackathon getOneById(int id) throws DALException { Hackathon hackat = null; List<Member> memberList; try { Connection cnx = JdbcTools.getConnection(); PreparedStatement rqt = cnx.prepareStatement(sqlSelectOneById); rqt.setInt(1, id); ResultSet rs = rqt.executeQuery(); while (rs.next()) { hackat = new Hackathon(rs.getInt("id"),rs.getString("name"),rs.getString("topic"), rs.getString("description")); //récupération des membres par appel au DAO gérant les membres memberList = DAOMember.getInstance().getAllJuryByIdHackathon(rs.getInt("id")); hackat.setJuryMembers(memberList); } rqt.close(); } catch (SQLException e) { //Exception personnalisée throw new DALException(e.getMessage(),e); } return hackat; } /** * Permet de mettre à jour la composition du jury du hackathon * @param hackid : hackathon auquel le jury participe * @throws DALException */ public void saveParticipationRoleJury(int hackid, Member oneJury) throws DALException { try { Connection cnx = JdbcTools.getConnection(); PreparedStatement rqt = cnx.prepareStatement(sqlInsertJuryMember); rqt.setInt(1, hackid); rqt.setInt(2, oneJury.getId()); rqt.executeUpdate(); rqt.close(); } catch (SQLException e) { throw new DALException(e.getMessage(),e); } } /** * Permet de mettre à jour la composition du jury du hackathon * @param hackid : hackathon auquel le jury participe * @param member * @throws DALException */ public void saveParticipationRoleJury2(int hackid, Member member) throws DALException { try { Connection cnx = JdbcTools.getConnection(); PreparedStatement rqt = cnx.prepareStatement(sqlInsertJuryRole); rqt.setInt(1, hackid); rqt.executeUpdate(); rqt.close(); } catch (SQLException e) { throw new DALException(e.getMessage(),e); } } /** * Permet de mettre à jour uniquement les settings du hackathon dans la base de données * @param obj : hackathon à mettre à jour * @throws DALException */ public void updateSettings(Hackathon obj) throws DALException { try { Connection cnx = JdbcTools.getConnection(); PreparedStatement rqt = cnx.prepareStatement(sqlUpdateOne); rqt.setString(1,obj.getName()); rqt.setString(2, obj.getTopic()); rqt.setString(3, obj.getDescription()); rqt.setInt(4, obj.getId()); rqt.executeUpdate(); rqt.close(); } catch (SQLException e) { throw new DALException(e.getMessage(),e); } } public void saveJury(Hackathon obj) throws DALException { try { Connection cnx = JdbcTools.getConnection(); PreparedStatement rqt = cnx.prepareStatement(sqlInsertMember); rqt.setString(1,obj.getFirstName()); rqt.setString(2,obj.getLastname()); rqt.setString(3,obj.getMail()); rqt.setString(4,obj.getTelephone()); rqt.setString(5,obj.getPortfolio()); rqt.setString(6, String.valueOf(obj.getPassword())); rqt.executeUpdate(); rqt.close(); //mise à jour de l'id du hackathon nouvellement créé - le champ name est UNIQUE } catch (SQLException e) { //Exception personnalisée throw new DALException(e.getMessage(),e); } } }
HackathonController.java
Code:package fr.siocoliniere.bll; import fr.siocoliniere.bo.Hackathon; import fr.siocoliniere.bo.Member; import fr.siocoliniere.dal.DALException; import fr.siocoliniere.dal.jdbc.DAOHackathon; import java.util.List; public class HackathonController { private List<Hackathon> hackathons; /** * PATTERN SINGLETON : contraint l'instanciation d'une UNIQUE instance de classe */ private static HackathonController instanceCtrl; /** * Pattern Singleton * @return HackathonController */ public static synchronized HackathonController getInstance(){ if(instanceCtrl == null){ instanceCtrl = new HackathonController(); } return instanceCtrl; } /** * Constructeur * Chargement de la liste des hackathons * En private : pattern Singleton */ private HackathonController() { try { this.hackathons = DAOHackathon.getInstance().getAll(); } catch (DALException e) { e.printStackTrace(); } } /** * Permet de récupérer l'ensemble des hackathons * @return la liste des hackathons */ public List<Hackathon> getAll(){ return hackathons; } /** * work in progress */ public List<Member> getPotentialJury() { return MemberController.getInstance().getAllByRoleJury(); } /** * Permet de sauvegarder les settings d'un hackathon * @param hackathonManaged * @param name nom du hacakthon * @param topic topic du hackathon * @param description description du hackathon */ public void saveHackathonStandalone(Hackathon hackathonManaged, String name, String topic, String description) { if (hackathonManaged != null) { // MAJ hackathon existant hackathonManaged.setName(name); hackathonManaged.setTopic(topic); hackathonManaged.setDescription(description); //persistance : Update try { DAOHackathon.getInstance().updateSettings(hackathonManaged); } catch (DALException e) { e.printStackTrace(); } } else { // Nouvel hackathon hackathonManaged = new Hackathon(name, topic, description); //persistance : Insert try { DAOHackathon.getInstance().saveHackathon(hackathonManaged); } catch (DALException e) { e.printStackTrace(); } } } /** * Permet de sauvegarder les settings d'un hackathon * @param hackathonJury * @param firstname * @param lastname * @param mail * @param telephone * @param portfolio * @param password * */ public void saveJuryStandalone(Hackathon hackathonJury, String firstname, String lastname, String mail, String telephone, String portfolio, char[] password) { if (hackathonJury != null) { // MAJ hackathon existant hackathonJury.setFirstname(firstname); hackathonJury.setLastname(lastname); hackathonJury.setMail(mail); hackathonJury.setTelephone(telephone); hackathonJury.setPortfolio(portfolio); hackathonJury.setPassword(password); //persistance : UpdateString firstname try { DAOHackathon.getInstance().updateSettings(hackathonJury); } catch (DALException e) { e.printStackTrace(); } } else { // Nouveeau Jury hackathonJury = new Hackathon(firstname, lastname, mail,telephone,portfolio,password); //persistance : Insert try { DAOHackathon.getInstance().saveJury(hackathonJury); } catch (DALException e) { e.printStackTrace(); } } } /** * Permet de persister l'ensemble des membres jouant le rôle de jury du hackathon * @param hackathonManaged : hackathon * @param juries : liste de membres */ public void saveParticipationJuryByIdHackathon(Hackathon hackathonManaged, List<Member> juries) { // maj objet hackathonManaged.clearJuryMember(); hackathonManaged.setJuryMembers(juries); //persistance try { //suppression des participations de membres en tant que jurys stockées en BDD DAOHackathon.getInstance().deleteAllParticipationJuryOfHackathon(hackathonManaged.getId()); // insertion des nouveaux jurys for (Member member :juries) { DAOHackathon.getInstance().saveParticipationRoleJury(hackathonManaged.getId(),member); } } catch (DALException e) { e.printStackTrace(); } } // public void saveParticipationJuryByIdHackathon2(Hackathon hackathonManaged) { //// DAOHackathon.getInstance().saveParticipationRoleJury2(hackathonManaged.getId()); // } }
HackathonParticipationJuryForm .java
Code:/* * Created by JFormDesigner on Tue Nov 15 14:29:30 CET 2022 */ package fr.siocoliniere.view; import fr.siocoliniere.bll.HackathonController; import fr.siocoliniere.bo.Hackathon; import fr.siocoliniere.bo.Member; import fr.siocoliniere.dal.DALException; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.List; import javax.swing.*; import javax.swing.border.*; /** * @author unknown */ public class HackathonParticipationJuryForm extends JDialog { private Hackathon hackathonJury; public HackathonParticipationJuryForm() { setModal(true); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setPreferredSize(new Dimension(500, 500)); setTitle("Hackat'Orga : Jury "); initComponents(); } private void yesButtonActionPerformed(ActionEvent e) throws DALException { // HackathonController.getInstance().saveParticipationJuryByIdHackathon2(hackathonJury); this.dispose(); } }
-----