[Aide Java] Base de données

Discussion dans 'Web, design' créé par Angy, 6 Avril 2007.

Statut de la discussion:
Fermée.
  1. Offline
    Angy \o/
    Bonjour!

    1ère chose:
    J'aimerais faire un programme java, où je pourrais récupérer les éléménts de la BD dans des JTextField. Ici je l'ai déjà récuperé dans une JTable, mais je n'arrive pas à le faire dans les JTextField (txtFieldChamp[]). Pour l'instant, j'ai créé dynamiquement mes textField avec un nombre que j'ai choisi, même chose pour les labels qui vont avec. (voir code complet en bas de la page)


    2ème chose:

    Comme j'ai créé dynamiquement les JLabel, et que je devrai les modifier par après par les noms des colonnes, j'ai essayé de faire un tableau de JLabel ( private JLabel nomLabel[];) mais si je le fais avec un tableau, il ne m'affiche plus après mes JLabel et JTextField dans la fenêtre où on voit les champs dans les textField)

    Code:
     private JLabel nomLabel[];
    
    ....
    
    nomLabel[i] = new JLabel(strLabel);
    ...
    monAfficherPanel2.add(nomLabel[i]);
    ...
    
    (ceci est une modification que j'ai fais après le code que j'ai posté en dessous, je ne l'ai pas remis vu que ca ne marche pas :-D )

    3ème chose:
    Pourquoi lorsque je fais:
    Code:
    nomLabel.setText( rsmd.getColumnLabel(j));
    Il ne fonctionne pas alors que J est bien un Int, alors que si je mets un chiffre en dur
    Code:
    nomLabel.setText( rsmd.getColumnLabel(2));
    il fonctionne dans ce cas là :/


    Quelqu'un saurait m'aider? C'est bien gentil :)

    Code source

    Main:
    Code:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.sql.*;
    import java.util.*;
    
    public class General {
    
    	public static void main(String args[])
    	{
    		gestionMangasTest application = new gestionMangasTest();
    		application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		application.setVisible(true);
    	}
    
    
    }
    
    Class de gestion et connexion intégrée

    Code:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    import java.sql.*;
    import java.util.*;
    
    import javax.swing.JOptionPane;
    import java.io.*;
    import javax.swing.filechooser.*;
    import java.awt.Component;
    
    public class gestionMangasTest extends JFrame 
    {
    	private JPanel menuPanel = new JPanel(); // Panel des menus
    	private JPanel monAfficherPanel = new JPanel(); // Panel de choix de la BD
    	private JPanel monAfficherPanel1 = new JPanel(); // Panel de choix de la table
    	private JPanel monAfficherPanel2 = new JPanel(); // Panel d'affichage des informations de la BD
        private JTextField txtFieldBD = new JTextField(10); // TextField du nom de la BD
        private JTextField txtFieldTable = new JTextField(10); // TextField du nom de la table à ouvrir
        private JTextField txtFieldChamp[] = new JTextField[10];
        private JLabel lblBD = new JLabel("Quelle base de données souhaitez-vous ouvrir ? "); 
        private JLabel lblTable = new JLabel("Quelle table souhaitez-vous ouvrir ? ");
        private JLabel lblPosition = new JLabel("Champs de la table ");
        private JButton boutonBD = new JButton("Ok");
        private JButton boutonTable = new JButton("OK");
        private JButton boutonChooser = new JButton("Ouvrir une BD");
        private JButton boutonSuivant = new JButton("Suivant");
        private JButton boutonPrecedent = new JButton("Précédent");
        private JButton boutonConfirmer = new JButton("Confirmer");
        private JFileChooser choixdeBD = new JFileChooser();
        private String nomBD = "gestionManga";
        private String nomTable, strLabel,lblNomTable;
        int resultat, retour;
        String url = "jdbc:odbc:gestionManga";
    	String login = "connect-03";
    	String pw = "connect-03";
    	
        Container conteneur = getContentPane();
       	
    	public gestionMangasTest()
    	{			
            super("Gestion de mangas");
                 
            
            choixdeBD.setFileSelectionMode(JFileChooser.FILES_ONLY);
            conteneur.setLayout(new FlowLayout());
            menuPanel.setLayout(new FlowLayout());
            
            
        	// Création Menus et Sous Menus 
        	
        	// Création du Menu Fichier
            JMenu menuFichier = new JMenu("Fichier");
    		menuFichier.setMnemonic('F');
    		
    		// Création du sous menu Ouvrir une base de données + ajout au menu Fichier
    		JMenuItem ouvrirBd = new JMenuItem("Ouvrir une base de données");
    		ouvrirBd.setMnemonic('O');
    		ouvrirBd.addActionListener(
    				new ActionListener(){
    			public void actionPerformed(ActionEvent evenement)
    			{
    				monAfficherPanel.setVisible(false);
    				monAfficherPanel1.setLayout(new FlowLayout());
    				monAfficherPanel1.add(lblTable);
    				monAfficherPanel1.add(txtFieldTable);
    				monAfficherPanel1.add(boutonTable);
    				nomTable = txtFieldTable.getText(); // on récupère le nom de la table à ouvrir
    				
    				
    				conteneur.add(monAfficherPanel1);
    				TableHandler gestion = new TableHandler();
    				boutonTable.addActionListener(gestion);
    				validate();
    			}
    		}
    		);
    		menuFichier.add(ouvrirBd);
    		
    		// Création du sous menu Fermer une base de données + ajout au menu Fichier	
    	    JMenuItem fermerBD = new JMenuItem("Fermer une base de données");
    		fermerBD.setMnemonic('F');
    		menuFichier.add(fermerBD);
    		
    		// Création du sous menu Quitter + ajout au menu Fichier	
    		JMenuItem optionQuitter = new JMenuItem("Quitter");
    		optionQuitter.setMnemonic('Q');
    		optionQuitter.addActionListener(
    				new ActionListener(){
    			public void actionPerformed(ActionEvent evenement)
    			{
    				System.exit(0);
    			}
    		}
    		);
    		menuFichier.add(optionQuitter);
    		
    		
    		JMenuBar barre = new JMenuBar();
    		setJMenuBar(barre);
    		barre.add(menuFichier);
    		
    		// Création du menu Mise à jour
    		JMenu menuModif = new JMenu("Mise à jour");
    		menuModif.setMnemonic('M');	
    		setJMenuBar(barre);
    		barre.add(menuModif);
    			
    		// Création du Sous Menu Ajouter un record + Ajout dans le menu Mise à jour
    		JMenuItem ajouterRecord = new JMenuItem("Ajouter un record");
    		ajouterRecord.setMnemonic('A');
    		menuModif.add(ajouterRecord);
    		
    		// Création du Sous Menu modifier un record + Ajout dans le menu Mise à jour
    		JMenuItem modifierRecord = new JMenuItem("Modifier un record");
    		modifierRecord.setMnemonic('m');
    		modifierRecord.addActionListener(
    				new ActionListener(){
    			public void actionPerformed(ActionEvent evenement)
    			{
    				boutonConfirmer.setVisible(true);
    				for (int i = 0 ; i<10; i++) // modifier i<10 par i< autant de champ qu'il y a dans la table
    				{
    					txtFieldChamp[i].setEnabled(true); // il ne rend que le dernier enable 
    				}
    			}
    		}
    		);
    		menuModif.add(modifierRecord);
    		
    		// Création du Sous Menu supprimer un record + Ajout dans le menu Mise à jour
    		JMenuItem supprimerRecord = new JMenuItem("Supprimer un record");
    		supprimerRecord.setMnemonic('S');
    		menuModif.add(supprimerRecord);
    		setSize(650,450);
    		setVisible(true);
    		
    		// Fin création Menu et sous Menu
          
            }
        	   	    	
           	private class TableHandler implements ActionListener
    		{
    			public void actionPerformed (ActionEvent e)
    			{	
    				if (e.getSource() == boutonTable);
    				{
    				monAfficherPanel1.setVisible(false);
    				monAfficherPanel2.setLayout(new GridLayout(20,2));	
    				lblNomTable = txtFieldTable.getText();
    				JLabel lblAffTable = new JLabel(lblNomTable);
    				monAfficherPanel2.add(lblPosition);
    				monAfficherPanel2.add(lblAffTable);
    							
    				for(int i = 0 ; i<10; i++) // modifier jusqu'a n champ
    				{
    					strLabel = "  monLabel" + i ;
    					JLabel nomLabel= new JLabel(strLabel); 
    					txtFieldChamp[i] = new JTextField(10); 
    					txtFieldChamp[i].enable(false);
    					monAfficherPanel2.add(nomLabel);
    					monAfficherPanel2.add(txtFieldChamp[i]);
    				}
    				
    				monAfficherPanel2.add(boutonPrecedent);
    				monAfficherPanel2.add(boutonSuivant);
    				monAfficherPanel2.add(boutonConfirmer);
    				boutonConfirmer.setVisible(false);
    				monAfficherPanel2.setVisible(true);
    				conteneur.add(monAfficherPanel2);
    				nomTable = txtFieldTable.getText();
    				connexion applic = new connexion();	
    				}
    		    }
    		}
           	
           	 public String getNomBD() {
    			return nomBD;
    		}
    
    		public void setNomBD(String nomBD) {
    			
    			this.nomBD = nomBD;
    		}
    
    		public String getNomTable() {
    			return nomTable;
    		}
    
    		public void setNomTable(String nomTable) {
    			this.nomTable = nomTable;
    		}
    
    		
    		public class connexion extends JFrame{
    			private Connection connexion;
    			private JTable table;
    			private gestionMangasTest gestMangas = new gestionMangasTest();
    			
    			public connexion()
    			{
    				String url = "jdbc:odbc:" + gestMangas.getNomBD();
    				String login = "connect-03";
    				String pw = "connect-03";
    				gestMangas.setVisible(false);
    						
    				try{
    					Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    					connexion = DriverManager.getConnection(
    							url,login,pw);
    				}
    				
    				catch(ClassNotFoundException cnfex){
    					System.err.println(
    							"Echec du chargement du pilote JDBC/ODBC.");
    					cnfex.printStackTrace();
    					System.exit(1);
    				}
    				
    				catch (SQLException sqlex) {
    					System.err.println("Connexion impossible");
    					sqlex.printStackTrace();
    				}
    				
    				getTable();
    				setSize(450,150);
    				show();
    			}
    			
    			private void getTable()
    			{
    				Statement instruction;
    				ResultSet jeuResultats;
    				
    				try{
    					String requete = "SELECT * FROM " + txtFieldTable.getText() ;
    					instruction = connexion.createStatement();
    					jeuResultats = instruction.executeQuery(requete);
    					afficherJeuResultats(jeuResultats);
    					instruction.close();
    				}
    				catch(SQLException sqlex){
    					sqlex.printStackTrace();
    				}
    			}
    			
    			private void afficherJeuResultats(ResultSet rs) throws SQLException
    			{
    				boolean autresEnregistrements = rs.next();
    				if(! autresEnregistrements){
    					JOptionPane.showMessageDialog(this,"Le jeu de résultats ne contient aucun enregistrement");
    					setTitle("Aucun enregistrement à afficher");
    					return;
    				}
    				
    				setTitle("Table " + txtFieldTable.getText());
    				Vector enTeteColonne = new Vector();
    				Vector rangees = new Vector();
    				
    				try{
    					ResultSetMetaData rsmd = rs.getMetaData();
    					
    					for(int i=1 ; i <= rsmd.getColumnCount(); ++i)
    						enTeteColonne.addElement(rsmd.getColumnName(i));
    					
    						do
    						{
    							rangees.addElement(getListe(rs,rsmd));
    						
    						} while(rs.next());
    						
    						table = new JTable(rangees, enTeteColonne);
    						JScrollPane defiler = new JScrollPane(table);
    						getContentPane().add(defiler,BorderLayout.CENTER);
    						validate();
    					}
    				
    					catch(SQLException sqlex){
    						sqlex.printStackTrace();
    					}
    				}
    				private Vector getListe(ResultSet rs,ResultSetMetaData rsmd) throws SQLException
    				{
    					Vector rangee = new Vector();
    						
    					for (int i = 1; i <= rsmd.getColumnCount(); ++i)
    						switch(rsmd.getColumnType(i)){
    						case Types.VARCHAR:
    											rangee.addElement(rs.getString(i));
    											break;
    						case Types.INTEGER:
    											rangee.addElement(new Long(rs.getLong(i)));
    											break;
    						default:
    										System.out.println("Le type était: " + rsmd.getColumnTypeName(i));
    				}
    					
    					return rangee;
    			}
    			
    			public void terminer()
    			{
    				try{
    					connexion.close();
    				}
    				
    				catch(SQLException sqlex){
    					System.err.println("Déconnexion impossible");
    					sqlex.printStackTrace();
    				}
    			}
    			
    		}
    
    
    		
    }
    
    Merci!
    Angy, 6 Avril 2007
    #1
Statut de la discussion:
Fermée.