package classes; import java.util.Date; public class Qcm { private int id; private String titre; private Date dateCreation; private String auteur; public Qcm(int id, String titre, /*Date dateCreation,*/ String auteur) { this.id = id; this.titre = titre; /*this.dateCreation = dateCreation;*/ this.auteur = auteur; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitre() { return titre; } public void setTitre(String titre) { this.titre = titre; } public Date getDateCreation() { return dateCreation; } public void setDateCreation(Date dateCreation) { this.dateCreation = dateCreation; } public String getAuteur() { return auteur; } public void setAuteur(String auteur) { this.auteur = auteur; } } package modeles; import java.sql.*; public class Modele { protected static Connection connect; protected static ResultSet result; protected static Statement requete; public static void Open() { String url = "jdbc:mysql://localhost:3306/si7_2013_12_13"; String user = "root"; String passwd = ""; try { connect = DriverManager.getConnection(url, user, passwd); } catch (SQLException e) { e.printStackTrace(); } } // Valider la transaction public static void commit() { if (connect != null) { try { connect.commit(); } catch (Exception e) { System.out.println("Erreur lors d'un commit"); } } } // Annuler la transaction public static void rollback() { if (connect != null) { try { connect.rollback(); } catch (Exception e) { System.out.println("Erreur lors d'un rollback"); } } } public static void close() { try { if (result != null) { result.close(); } if (requete != null) { requete.close(); } if (connect != null) { connect.close(); } } catch (Exception e) { System.out.println("Erreur lors d'un close"); } } } package modeles; import classes.Qcm; import java.sql.Date; import java.sql.PreparedStatement; import java.util.ArrayList; public class QcmModele extends Modele { public static int lastId() { int lastid = 0; String requeteChaine = "select max(id) as lastid from qcm"; PreparedStatement requete = null; try { requete = connect.prepareStatement(requeteChaine); result = requete.executeQuery(); result.next(); lastid = result.getInt("lastid") + 1; } catch (Exception e) { System.out.println(e + "Erreur dans la requete dans la classe QcmModele fonction lastId"); } finally { try { close(); } catch (Exception ex) { System.out.println("Erreur lors de la fermeture de la connexion avec la base de données dans la classe QcmModele fonction readAll"); } } return lastid; } public static void create(Qcm unQcm) { // Variables PreparedStatement requete = null; String requeteString = null; try { // Création de la requête requeteString = "INSERT INTO qcm(titre,auteur,`dateCreation`) VALUES (?,?,?)"; // Préparation de la requête requete = connect.prepareStatement(requeteString); requete.setString(1, (String) unQcm.getTitre()); requete.setDate(3, (Date) new Date(10, 10, 2013)); requete.setString(2, (String) unQcm.getAuteur()); // Execution de la requête requete.executeUpdate(); } catch (Exception e) { System.out.println(e + "Erreur dans la requete dans la classe QcmModele.java fonction creerQcm"); } finally { try { close(); } catch (Exception ex) { System.out.println("Erreur lors de la fermeture de la connexion avec la base de données dans la classe QcmModele fonction create"); } } } public static void delete(Integer unId) { // Variables PreparedStatement requete = null; String requeteString = null; int codeErreur = 0; try { // Création de la requête requeteString = "delete from qcm where id=?"; // Préparation de la requête requete = connect.prepareStatement(requeteString); requete.setInt(1, unId); requete.executeUpdate(); } catch (Exception e) { System.out.println(e + "Erreur dans la requete dans la classe QcmModele fonction delete"); } finally { try { close(); } catch (Exception ex) { System.out.println("Erreur lors de la fermeture de la connexion avec la base de données dans la classe QcmModele fonction delete"); } } } public static ArrayList readAll() { ArrayList res = new ArrayList(); String requeteChaine = "select * from qcm"; PreparedStatement requete = null; try { requete = connect.prepareStatement(requeteChaine); result = requete.executeQuery(); if (result != null) { while (result.next()) { Qcm unQcm = new Qcm(result.getInt("id"), result.getString("titre"), result.getString("auteur")); res.add(unQcm); } } } catch (Exception e) { System.out.println(e + "Erreur dans la requete dans la classe QcmModele fonction readAll"); } finally { try { close(); } catch (Exception ex) { System.out.println("Erreur lors de la fermeture de la connexion avec la base de données dans la classe QcmModele fonction readAll"); } } return res; } } package vues; import javax.swing.table.AbstractTableModel; import classes.Qcm; import java.sql.SQLException; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; import modeles.QcmModele; import javax.swing.*; public class ModeleJQcmJtable extends AbstractTableModel { private ArrayList donnees; private final String[] entetes = {"Prénom", "Nom"}; public ModeleJQcmJtable() { super(); QcmModele.Open(); donnees = QcmModele.readAll(); QcmModele.close(); } ; public int getRowCount() { return donnees.size(); } public int getColumnCount() { return entetes.length; } public String getColumnName(int columnIndex) { return entetes[columnIndex]; } public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { case 0: return donnees.get(rowIndex).getId(); case 1: return donnees.get(rowIndex).getTitre(); /*case 2: return donnees.get(rowIndex).getDateCreation();*/ case 2: return donnees.get(rowIndex).getAuteur(); default: return null; //Ne devrait jamais arriver } } public void addQcm(Qcm unQcm) { QcmModele.Open(); unQcm.setId(QcmModele.lastId()); QcmModele.Open(); donnees.add(unQcm); fireTableRowsInserted(donnees.size() - 1, donnees.size() - 1); QcmModele.create(unQcm); QcmModele.close(); } public void removeQcm(int rowIndex, int idQcm) { donnees.remove(rowIndex); fireTableRowsDeleted(rowIndex, rowIndex); QcmModele.Open(); QcmModele.delete(idQcm); QcmModele.close(); } } /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package vues; import classes.Qcm; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; /** * * @author sebpern */ public class t extends javax.swing.JFrame { private ModeleJQcmJtable modele = new ModeleJQcmJtable(); /** * Creates new form t */ public t() { initComponents(); jTable1.setModel(modele); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jButton1 = new javax.swing.JButton(); jTextField1 = new javax.swing.JTextField(); jButton2 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane1.setViewportView(jTable1); jButton1.setLabel("Ajouter"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jTextField1.setText("jTextField1"); jTextField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField1ActionPerformed(evt); } }); jButton2.setText("Supprimer"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addGap(64, 64, 64) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jButton2) .addGroup(layout.createSequentialGroup() .addComponent(jButton1) .addGap(72, 72, 72) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton1) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(jButton2) .addContainerGap(33, Short.MAX_VALUE)) ); pack(); }// private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: //instancier un objet QCM Qcm unQcm = new Qcm(0,jTextField1ActionPerformed,"jklmjl"); //appeler le ModeleJtable modele.addQcm(unQcm); } private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(t.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(t.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(t.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(t.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } // /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new t().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; private javax.swing.JTextField jTextField1; // End of variables declaration }