Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP Vehicule-JDBC

Sujet résolu
    17 juin 2017 à 16:29:54

    Bonjour,

    Voila je suis en train de faire le cours : Apprenez à programmer en JAVA et j'en suis au dernier TP dont voici le sujet : ici

    J'ai bien réussi a faire l'ajout de véhicule avec l'interface et les requêtes SQL mais j'arrive pas à :

    - refresh mon JTable automatiquement.
    Je sais qu'il faut que j'utilise un TableModel mais je ne sais pas comment le passer a ma classe ViewAddVehicule.

    - Comment récuperer l'id de la ligne sélectionné quand j'appui sur le boutton DETAIL.


    Le fait de récupérer du bout de code a adapté me gêne un peu et je suis perdu, je pense que j'aurai eu moins de mal en partant de zero.

    Voilà les classes que j'ai modifier :

    NewVehiculeListener :

    package fr.ocr.ihm.listener;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JFrame;
    import fr.ocr.ihm.ViewAddVehicule;
    
    public class NewVehiculeListener implements ActionListener {
    
    	private JFrame frame;
    	
    	public NewVehiculeListener(JFrame f) {
    		frame = f;
    	}
    	
    	public void actionPerformed(ActionEvent e) {
    		/*	 
    		 Vous devez d�finir cette m�thode afin d'afficher
    		 une popup personnalis�e pour ainsi pouvoir cr�er un nouveau v�hicule	 
    		 */
    		
    		// creation de la fenetre ViewAddVehicule
    		ViewAddVehicule viewAdd = new ViewAddVehicule(frame,"Add Vehicule", true);
    	}
    }
    

    ViewAddVehicule :

    package fr.ocr.ihm;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JComboBox;
    import javax.swing.JDialog;
    import javax.swing.JFormattedTextField;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import javax.swing.SwingUtilities;
    import javax.swing.table.DefaultTableModel;
    
    import com.sun.xml.internal.ws.util.StringUtils;
    
    import fr.ocr.sql.DAOTableFactory;
    import fr.ocr.sql.DatabaseTable;
    import fr.ocr.sql.HsqldbConnection;
    
    //import test.database.StringUtils;
    
    import jdk.nashorn.internal.runtime.options.Options;
    
    public class ViewAddVehicule extends JDialog{
    	  
    	private JTextField nom;
    	private JLabel nomLabel;	
    	
    	private JComboBox marque;
    	private JLabel marqueLabel;	
    	
    	private JComboBox type;
    	private JLabel typeLabel;
    	
    	private JTextField prix;
    	private JLabel prixLabel;
    	
    	private JCheckBox barre = new JCheckBox("Barres de toit");
    	private JCheckBox clim = new JCheckBox("Climatisation");
    	private JCheckBox gps = new JCheckBox("GPS");
    	private JCheckBox siege = new JCheckBox("Sièges chauffants");
    	private JCheckBox toit = new JCheckBox("Toit ouvrant");
    	
    	private String path="";
    	
    	private JOptionPane jopOk = new JOptionPane();
    	private JOptionPane jopNok = new JOptionPane();
    	
    	public ViewAddVehicule(final JFrame parent, String title, boolean modal){
    
    		//Appelle du construteur JDialog
    		super(parent, title, modal);
    		
    		//Taille
    		this.setSize(700, 300);
    
    		//La position
    		this.setLocationRelativeTo(null);
    		//redimensionnable ou non
    		this.setResizable(true);
    
    		// ==============Connection BDD ==============
    		
    		try {
    			path = new File(".").getCanonicalPath();
    			path += "/hsqldb/database/";
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    		System.out.println("Chemin d'acces a HSQLDB : " + path);
    		try {
    			Class.forName("org.hsqldb.jdbc.JDBCDriver");
    		} catch (Exception e) {
    			System.err.println("ERROR: failed to load HSQLDB JDBC driver.");
    			e.printStackTrace();
    			return;
    		}
    	
    		// ============= VIEW ===============    
    		//Nom
    		JPanel panNom = new JPanel();
    		panNom.setBackground(Color.white);
    		panNom.setPreferredSize(new Dimension(280, 60));
    		nom = new JTextField();
    		nom.setPreferredSize(new Dimension(100, 25));
    		nom.setText("");
    		panNom.setBorder(BorderFactory.createTitledBorder("Nom du vehicule"));
    		nomLabel = new JLabel("Nom :");
    		panNom.add(nomLabel);
    		panNom.add(nom);
    
    		//Marque
    		JPanel panMarque = new JPanel();
    		panMarque.setBackground(Color.white);
    		panMarque.setPreferredSize(new Dimension(280, 60));
    		panMarque.setBorder(BorderFactory.createTitledBorder("Marque du vehicule"));
    		marque = new JComboBox();
    
    		
    		try {
    			// creation de la connection
    			Connection conn = DriverManager.getConnection("jdbc:hsqldb:file:"+ path + "VEHICULE", "SA", "");
    			Statement stateMarque = conn.createStatement();
    			
    			// requete pour recuperer le nom des marques
    			ResultSet result = stateMarque.executeQuery("SELECT nom FROM marque");
    			ResultSetMetaData resultMeta = result.getMetaData();
    			
    			// ajout des marques dans le JComboBox
    			while (result.next()) {
    				for (int i = 1; i <= resultMeta.getColumnCount(); i++){
    					marque.addItem(result.getObject(i));
    				}
    			}
    		
    			// fermeture de la connction 
    			conn.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    				
    		marqueLabel = new JLabel("Marque : ");
    		panMarque.add(marqueLabel);
    		panMarque.add(marque);
       
    		
    		//Type moteur
    		JPanel panType = new JPanel();
    		panType.setBackground(Color.white);
    		panType.setPreferredSize(new Dimension(570, 60));
    		panType.setBorder(BorderFactory.createTitledBorder("Type de moteur"));
    		type = new JComboBox();
    
    		try {
    			// creation de la connection
    			Connection conn1 = DriverManager.getConnection("jdbc:hsqldb:file:"+ path + "VEHICULE", "SA", "");
    			Statement stateMoteur = conn1.createStatement();
    
    			Connection conn2 = DriverManager.getConnection("jdbc:hsqldb:file:"+ path + "VEHICULE", "SA", "");
    			Statement stateType = conn2.createStatement();
    
    			
    			// requete pour recuperer le moteur
    			ResultSet resultMoteur = stateMoteur.executeQuery("SELECT moteur,cylindre FROM moteur");
    			ResultSetMetaData resultMetaMoteur = resultMoteur.getMetaData();
    			
    			// ajout des marques dans le JComboBox
    			while (resultMoteur.next()) {
    				
    				// requete pour recuperer le type de moteur
    				ResultSet resultType = stateType.executeQuery("SELECT description FROM type_moteur WHERE id="+resultMoteur.getInt(1));
    				ResultSetMetaData resultMetaType = resultType.getMetaData();
    				
    				while(resultType.next()){		
    					type.addItem(resultType.getString(1)+" "+resultMoteur.getString(2));
    				}
    			}
    		
    			// fermeture de la connction 
    			conn1.close();
    			conn2.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		
    		typeLabel = new JLabel("Type : ");
    		panType.add(typeLabel);
    		panType.add(type);
    		
    		//Prix
    		JPanel panPrix = new JPanel();
    		panPrix.setBackground(Color.white);
    		panPrix.setPreferredSize(new Dimension(280, 60));
    		prix = new JFormattedTextField();
    		prix.setPreferredSize(new Dimension(100, 25));
    		panPrix.setBorder(BorderFactory.createTitledBorder("Prix du vehicule"));
    		prixLabel = new JLabel("Prix :");
    		panPrix.add(prixLabel);
    		panPrix.add(prix);
    		
    		
    		//options
    		JPanel panOption = new JPanel();
    		panOption.setBackground(Color.white);
    		panOption.setPreferredSize(new Dimension(680, 60));
    		panOption.setBorder(BorderFactory.createTitledBorder("Options Disponibles"));
    		panOption.add(barre);
    		panOption.add(clim);
    		panOption.add(gps);
    		panOption.add(siege);
    		panOption.add(toit);
    		
    		
    		//control
    		JPanel panControl = new JPanel();
    		JButton okButton = new JButton("Ok");
    		JButton cancelButton = new JButton("Annuler");
    		panControl.add(okButton);
    		panControl.add(cancelButton);
    		
    		
    		// ============ ActionButton ================
    	    
    		// action lors du clique sur Annuler
    		cancelButton.addActionListener(new ActionListener(){
    	        public void actionPerformed(ActionEvent arg0) {
    	          setVisible(false);
    	        }      
    	      });
    
    		
    		// action lors du clique sur Ok
    		okButton.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent arg0) {
    			    
    				//verification que les champs de saisie soient rempli
    				if(nom.getText().equals("")){
    				    jopNok.showMessageDialog(null, "Saisie Nom incorrect ", "Attention", JOptionPane.WARNING_MESSAGE); 
    					return;
    				}else if(isValidDouble(prix.getText()) == false){
    				    jopNok.showMessageDialog(null, "Saisie Prix incorrect ", "Attention", JOptionPane.WARNING_MESSAGE); 
    				    return;
    				}
    				
    				// ==============Connection BDD ==============				
    				try {
    					path = new File(".").getCanonicalPath();
    					path += "/hsqldb/database/";
    				} catch (IOException e1) {
    					e1.printStackTrace();
    				}
    				System.out.println("Chemin d'acces a HSQLDB : " + path);
    				try {
    					Class.forName("org.hsqldb.jdbc.JDBCDriver");
    				} catch (Exception e) {
    					System.err.println("ERROR: failed to load HSQLDB JDBC driver.");
    					e.printStackTrace();
    					return;
    				}
    								
    				try {
    					// creation de la connection
    					Connection conn = DriverManager.getConnection("jdbc:hsqldb:file:"+ path + "VEHICULE", "SA", "");
    					Statement stateAdd = conn.createStatement();
    					
    					// pour recuperer l'id de la marque et du moteur on recupere l'index de
    					// l'objet selectionne dans le JComboBox
    					int statut = stateAdd.executeUpdate("INSERT INTO vehicule (marque, moteur, prix, nom) VALUES ("+marque.getSelectedIndex()+", "+type.getSelectedIndex()+","+Double.parseDouble(prix.getText())+",'"+nom.getText()+"')");
    									
    					// recuperation de l'id du dernier vehicule
    					int lastId = -1;
    					Statement stateLastId = conn.createStatement();
    					// requete pour recuperer le dernier id des vehicule
    					ResultSet resultLastId = stateLastId.executeQuery("SELECT MAX(id) AS last_id FROM vehicule");
    					ResultSetMetaData resultMeta = resultLastId.getMetaData();
    					
    					// recuperation de l'id
    					while (resultLastId.next()) {
    						for (int i = 1; i <= resultMeta.getColumnCount(); i++){
    							lastId = resultLastId.getInt(1);
    						}
    					}
    
    					// si l'INSERT a fonctionne
    					if(statut == 1){
    						String requeteOption = "";
    						
    						if(barre.isSelected()){
    							requeteOption += "INSERT INTO vehicule_option (id_vehicule, id_option) VALUES ("+lastId+", "+0+");";
    						}
    						if(clim.isSelected()){
    							requeteOption += "INSERT INTO vehicule_option (id_vehicule, id_option) VALUES ("+lastId+", "+1+");";
    						}
    						if(gps.isSelected()){
    							requeteOption += "INSERT INTO vehicule_option (id_vehicule, id_option) VALUES ("+lastId+", "+2+");";
    						}
    						if(siege.isSelected()){
    							requeteOption += "INSERT INTO vehicule_option (id_vehicule, id_option) VALUES ("+lastId+", "+3+");";
    						}
    						if(toit.isSelected()){
    							requeteOption += "INSERT INTO vehicule_option (id_vehicule, id_option) VALUES ("+lastId+", "+4+");";
    						}
    			
    						if(!requeteOption.equals("")){
    							// creation de la connection
    							Connection connOption = DriverManager.getConnection("jdbc:hsqldb:file:"+ path + "VEHICULE", "SA", "");
    							Statement stateAddOption = connOption.createStatement();
    							
    							// requete d'ajout des options
    							int statutAddOption = stateAddOption.executeUpdate(requeteOption);
    							
    							// message d'info ajout vehicule ok
    							jopOk = new JOptionPane();
    						    jopOk.showMessageDialog(null, "Ajout du vehicule ok ", "Information", JOptionPane.INFORMATION_MESSAGE); 
    						    
    							connOption.close();
    						}
    					}
    								
    					// fermeture de la connction 
    					conn.close();
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    				
    				setVisible(false);
    			}      
    		
    			// fonction qui permet de testé si le string est bien un nombre double
    			public boolean isValidDouble(String str) {
    				try {
    					Double.parseDouble(str);
    				} catch (NumberFormatException nfe) {
    					return false;
    				}
    				return true;		
    			}
    		
    		});
    
    		// ==========================================
    		    
    	    JPanel content = new JPanel();
    	    content.setBackground(Color.white);
    	    content.add(panNom);
    	    content.add(panMarque);    
    	    content.add(panType);   
    	    content.add(panPrix);
    	    content.add(panOption);
    		
    	    this.getContentPane().add(content, BorderLayout.CENTER);
    	    this.getContentPane().add(panControl, BorderLayout.SOUTH);
    	    
    		// Affichage
    		this.setVisible(true);
    	  }	
    }
    

    Classe ButtonListener :

    package fr.ocr.ihm.listener;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import javax.swing.JOptionPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    //Notre listener pour le bouton
    public class ButtonListener implements ActionListener {
    	protected int column, row, id;
    	protected JTable table;
    	protected DefaultTableModel modelTable;
    	
    	private JOptionPane jopOk;
    	private JOptionPane jopNok;
    	private String path = "";
    
    	public void setColumn(int col) {
    		this.column = col;
    	}
    
    	public void setRow(int row) {
    		this.row = row;
    	}
    
    	public void setTable(JTable table) {
    		this.table = table;
    	}
    	
    	public void setModelTable(DefaultTableModel modelTable){
    		this.modelTable = modelTable;
    	}
    
    	public void actionPerformed(ActionEvent event) {
    		/*
    		
    		Ici, il vous faut definir comment supprimer un vehicule
    		et n'oubliez pas de supprimer toutes les options de ceui-ci...
    		
    		*/
    		System.out.println(table.getValueAt(table.getSelectedRow(), 4));
    		
    		// ==============Connection BDD ==============
    		
    		try {
    			path = new File(".").getCanonicalPath();
    			path += "/hsqldb/database/";
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    		System.out.println("Chemin d'acces a HSQLDB : " + path);
    		try {
    			Class.forName("org.hsqldb.jdbc.JDBCDriver");
    		} catch (Exception e) {
    			System.err.println("ERROR: failed to load HSQLDB JDBC driver.");
    			e.printStackTrace();
    			return;
    		}
    		
    		try {
    			// creation de la connection
    			Connection conn = DriverManager.getConnection("jdbc:hsqldb:file:"+ path + "VEHICULE", "SA", "");
    			Statement stateDel1 = conn.createStatement();
    			Statement stateDel2 = conn.createStatement();
    			
    			//Integer id = -1;
    			int statut1 = -1;
    			int statut2 = -1;
    			
    			id = Integer.parseInt(table.getValueAt(table.getSelectedRow(), 4).toString());
    					
    			//suppression des options du vehicule dans la table vehicule_option
    			statut2 = stateDel2.executeUpdate("DELETE FROM vehicule_option WHERE id_vehicule = "+id);
    			
    			// suppression du vehicule dans la table vehicule
    			statut1 = stateDel1.executeUpdate("DELETE FROM vehicule WHERE id = "+id);
    
    			if(statut1 != -1 && statut2 != -1){
    				jopOk = new JOptionPane();
    			    jopOk.showMessageDialog(null, "Suppression du vehicule ok ", "Information", JOptionPane.INFORMATION_MESSAGE); 
    			}else{
    				jopNok = new JOptionPane();
    			    jopNok.showMessageDialog(null, "Erreur de suppression ", "Attention", JOptionPane.WARNING_MESSAGE); 			
    			}
    			
    			// fermeture de la connction 
    			conn.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}	
    	}
    }

    Classe ViewDetailVehiculeListener :

    package fr.ocr.ihm.listener;
    
    import java.awt.event.ActionEvent;
    
    import javax.swing.JFrame;
    import javax.swing.JTable;
    
    import fr.ocr.ihm.ViewDetailVehicule;
    
    public class ViewDetailVehiculeListener extends ButtonListener {
    	private JFrame frame;
    	private JTable tableau;
    	
    	public ViewDetailVehiculeListener(JFrame f){
    		this.frame = f;
    	}
    
    	public void actionPerformed(ActionEvent e) {
    				
    		//Vous devez definir comment afficher le detail d'un vehicule
    		//ceci dans un popup personnalisee
    		
    		ViewDetailVehicule viewDetail = new ViewDetailVehicule(frame,"Detail Vehicule", true);
    	}
    }
    


    Classe ViewDetailVehicule :

    package fr.ocr.ihm;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.io.File;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import javax.swing.BorderFactory;
    import javax.swing.JComboBox;
    import javax.swing.JDialog;
    import javax.swing.JFormattedTextField;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.table.DefaultTableModel;
    
    public class ViewDetailVehicule extends JDialog{
    
    	private JLabel nomLabel;
    	private JLabel marqueLabel;
    	private JLabel typeLabel;
    	private JLabel prixLabel;
    	private JLabel optionsLabel;
    	private JLabel prixTotalLabel;
    
    	private String path = "";
    	
    	public ViewDetailVehicule(JFrame parent, String title, boolean modal){
    		
    		//Appelle du construteur JDialog
    		super(parent, title, modal);
    
    		
    		//Taille
    		this.setSize(700, 300);
    
    		//La position
    		this.setLocationRelativeTo(null);
    		//redimensionnable ou non
    		this.setResizable(true);
    
    		// ==============Connection BDD ==============
    		
    		try {
    			path = new File(".").getCanonicalPath();
    			path += "/hsqldb/database/";
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    		System.out.println("Chemin d'acces a HSQLDB : " + path);
    		try {
    			Class.forName("org.hsqldb.jdbc.JDBCDriver");
    		} catch (Exception e) {
    			System.err.println("ERROR: failed to load HSQLDB JDBC driver.");
    			e.printStackTrace();
    			return;
    		}
    		
    		// ============= VIEW ===============    
    		//Nom
    		String nom = "";
    		JPanel panNom = new JPanel();
    		panNom.setBackground(Color.white);
    		panNom.setPreferredSize(new Dimension(280, 60));
    		panNom.setBorder(BorderFactory.createTitledBorder("Nom du vehicule"));
    		
    		try {
    			// creation de la connection
    			Connection conn = DriverManager.getConnection("jdbc:hsqldb:file:"+ path + "VEHICULE", "SA", "");
    			Statement stateNom = conn.createStatement();
    			
    			
    			/*
    			 * Ici il me manque la recuperation de l'id de la ligne sélectionnée
    			 * 
    			 */
    			
    			// requete pour recuperer le nom			
    			ResultSet result = stateNom.executeQuery("SELECT nom FROM vehicule WHERE id = "+id);
    			ResultSetMetaData resultMeta = result.getMetaData();
    			
    			// recup du nom du vehicule
    			while (result.next()) {
    				for (int i = 1; i <= resultMeta.getColumnCount(); i++){
    					nom = result.getString(1);
    				}
    			}
    		
    			// fermeture de la connction 
    			conn.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}	
    		nomLabel = new JLabel("Nom :"+nom);
    		panNom.add(nomLabel);
    
    		//Marque
    		JPanel panMarque = new JPanel();
    		panMarque.setBackground(Color.white);
    		panMarque.setPreferredSize(new Dimension(280, 60));
    		panMarque.setBorder(BorderFactory.createTitledBorder("Marque du vehicule"));
    
    
    		//type
    		JPanel panType = new JPanel();
    		panType.setBackground(Color.white);
    		panType.setPreferredSize(new Dimension(570, 60));
    		panType.setBorder(BorderFactory.createTitledBorder("Type de moteur du vehicule"));
    		
    		//Prix
    		JPanel panPrix = new JPanel();
    		panPrix.setBackground(Color.white);
    		panPrix.setPreferredSize(new Dimension(280, 60));
    		panPrix.setBorder(BorderFactory.createTitledBorder("Prix du vehicule"));
    		prixLabel = new JLabel("Prix sans option : ");
    
    		//options
    		JPanel panOption = new JPanel();
    		panOption.setBackground(Color.white);
    		panOption.setPreferredSize(new Dimension(680, 60));
    		panOption.setBorder(BorderFactory.createTitledBorder("Options Disponibles"));
    
    		//prix Total
    		JPanel panPrixTotal = new JPanel();
    		panPrixTotal.setBackground(Color.white);
    		panPrixTotal.setPreferredSize(new Dimension(280, 60));
    		panPrixTotal.setBorder(BorderFactory.createTitledBorder("Prix du vehicule"));
    		prixTotalLabel = new JLabel("");
    		
    		
    	    JPanel content = new JPanel();
    	    content.setBackground(Color.white);
    	    content.add(panNom);
    	    content.add(panMarque);    
    	    content.add(panType);   
    	    content.add(panPrix);
    	    content.add(panOption);
    		
    	    this.getContentPane().add(content, BorderLayout.CENTER);
    	    
    		// Affichage
    		this.setVisible(true);
    	}
    }
    

    Voila mes modifications, les autres classes je ne les ai pas touché.
    J'aurai juste besoin que quelqu'un m'oriente vers les solutions a mes problèmes.

    Merci ;)



    • Partager sur Facebook
    • Partager sur Twitter
      18 juin 2017 à 21:31:37

      Merci =)

      J'ai résolu mes problèmes :

      - Pour le refresh de mon tableau après l'ajout, je le génère comme c'est fait la première fois :

      						// Donnees de notre tableau
      						parent.getContentPane().removeAll();
      						parent.getContentPane().add(
      								new JScrollPane(DAOTableFactory.getTable(
      										HsqldbConnection.getInstance(),databaseTable,parent)),
      								BorderLayout.CENTER);
      						parent.getContentPane().revalidate();


      - Pour supprimer j'ai crée un modelTable !

          			    ((ZModel)table.getModel()).removeRow(this.row);
      

      Tout simplement !

      -
      Edité par Morin21 18 juin 2017 à 21:32:44

      • Partager sur Facebook
      • Partager sur Twitter
        28 juin 2018 à 19:34:47

        Bonjour Morin21, 

        S'il vous plait, je voulais savoir comment vous avez fait pour la récupération de l'id de la ligne sélectionnée dans la classe ViewDetailVehicule.

        Merci pour votre aide.

        • Partager sur Facebook
        • Partager sur Twitter

        TP Vehicule-JDBC

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown