IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

[Débutant] JComboBox Dynamique avec Connection Oracle


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    BFH
    BFH est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut [Débutant] JComboBox Dynamique avec Connection Oracle
    Bonjour, je voudrais savoir comment on fait un JComboBox dynamique qui contient autant de choix que l'on a de ligne d'un champs donné dans une table choisie de notre base de données.

    Voici ma connection a la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static void main( String[] args ) throws SQLException {
            try
            {// Se connecte au Oracle XE local entant que l'utilisateur 
            //SYSTEM, mdp SYSTEM :
            OracleDataSource ods = new OracleDataSource();
            ods.setURL( "jdbc:oracle:thin:SYSTEM/SYSTEM@localhost:1521/XE");
            Connection conn = ods.getConnection();
            }
            catch( SQLException e )
            {
            	//e.printStackTrace();
                System.out.println( e.getLocalizedMessage() );
            }
    	}
    Maintenant ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	public static void select_fct( Connection conn )
        {
            try
            {
                // On crée les requêtes de base :
                String query1 = "SELECT * FROM Salle";
     
                Statement stmt1 = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY );
                ResultSet srs = stmt1.executeQuery( query1 );
                int line = 0;
                while (srs.next()) 
    	            {int id = srs.getInt(1);                    // IMPORTANT
    	            String nomsalle = srs.getString(2);}  // IMPORTANT
            }
            catch( SQLException e )
    			{System.out.println( e.getLocalizedMessage() );}
        }
    Enfin le code de mon menu déroulant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {ComboBoxModel SalleModel = new DefaultComboBoxModel(new String[]{"NOM DYNAMIQUE SI POSSIBLE"});
    		Salle = new JComboBox();
    		this.add(Salle, new GridBagConstraints(5,1,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(0, 0, 0, 0),0,0));
    			Salle.setModel(SalleModel);}
    Comment je dois faire pour avoir 1 Nom par salle existante ?

    D'avance Merci !

  2. #2
    Membre Expert
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Par défaut
    Bonjour,
    Comment je dois faire pour avoir 1 Nom par salle existante ?
    Il te suffit de récupérer, lors de ta requête, les noms dans une List. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static List<String> getNoms( Connection conn ){
    List<String> noms = new ArrayList<String>();
    //...
    while(srs.next){
        String nom = srs.getString(2);
        noms.add(nom);
    }
    //...
    return noms;
    }
    Puis de fournir ces noms à ton modèle. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List<String> noms = TaClasse.getNoms(taConnection);
    ComboBoxModel SalleModel = new DefaultComboBoxModel(noms.toArray(new String[noms.size()]));
    Pense aussi à bien fermer tes ResultSet et Statements, à choisir les types de ResultSet en fonction de tes besoins et à suivre les conventions de codage java (noms de variables commencant par des minuscules .

    Bonne chance
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  3. #3
    BFH
    BFH est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    Euh... merci pour cette réponse rapide.
    Mais comme le précise l'énnoncé je débute et donc j'ai rien compris a ce que tu m'as dit, enfin si vaguement...

    Code :

    public static List<String> getNoms( Connection conn )
    { List<String> noms = new ArrayList<String>();
    //...
    while(srs.next)
    { String nom = srs.getString(2); noms.add(nom); }
    //... return noms; }
    Du coup avec ça ma fonction de requete je la jette ou je modifie le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void select_fct( Connection conn )
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static List<String> getNoms( Connection conn )
    Ou bien j'ai rien compris?


    Edit : ---------------------------------------

    J'ai donc essayé de remplacer "void select_fct" par "List<String> getNoms" avec tout le reste du code biensur .

    ça me retourne une erreur (je travail sous Eclipse) à :
    List
    ArrayList

    erreur pour List :
    The type List is not generic; it cannot be parameterized with arguments
    erreur pour ArrayList :
    ArrayList cannot be resolved to a type

  4. #4
    Membre Expert
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Par défaut
    Salut,
    The type List is not generic; it cannot be parameterized with arguments
    Tu utilises une version de Java antérieure à 1.5. Les types génériques ne sont disponibles qu'à partir de cette version. Tu as donc deux possibilités :
    1 - Tu continues à utiliser cette version et tu fais les modifications suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List noms = new ArrayList();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List noms = TaClasse.getNoms(taConnection);
    ComboBoxModel SalleModel = new DefaultComboBoxModel((String[])noms.toArray());
    2 - Tu installes Java 5.0. Il faudra ensuite que tu dises à Eclipse d'utiliser cette nouvelle version de Java (Window>Preferences>Java>Installed JREs).

    ArrayList cannot be resolved to a type
    Il faut importer cette classe. Tu peux mettre ton curseur sur le mot et appuyer sur Ctrl+1 (ou cliquer sur la "petite ampoule" qui apparait dans la marge), Eclipse te proposera automatiquement des corrections.

    Bonne chance
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  5. #5
    BFH
    BFH est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    J'ai réglé les problemes liés aux List et ArrayList avec des imports correct

    Maintenant j'ai ça comme code:

    1. La Méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public List<String> getNoms( Connection conn )
        {
    		List<String> noms = new List<String>(); //Err : Cannot instanciate the type Liste<String>
    		try
            {
                // On crée les requêtes de base :
                String query1 = "SELECT * FROM Salle";
                
                Statement stmt1 = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY );
                ResultSet srs = stmt1.executeQuery( query1 );
                
                while (srs.next()) 
    	            {int id = srs.getInt(1);
    	            String nomsalle = srs.getString(2);
    	            noms.add(nomsalle);
    	            }
                return noms;
            }
            catch( SQLException e )
    			{System.out.println( e.getLocalizedMessage() );}
        }

    1. La ComboBox Dynamique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {List<String> noms = JeNeSaisPasQuelNomMettre.getNoms(JeNeSaisPasQuelNomMettre);
    		ComboBoxModel SalleModel = new DefaultComboBoxModel(noms.toArray(new String[noms.size()]));
    		Salle = new JComboBox();
    		this.add(Salle, new GridBagConstraints(5,1,1,1,0.0,0.0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(0, 0, 0, 0),0,0));
    			Salle.setModel(SalleModel);}
    Maintenant, désolé si je deviens lourd mais les cours de JAVA que j'ai eu ne m'on pas du tout appris a faire cela...
    Et j'ai très peu de temps pour me documenter je dois rendre ce projet mardi

    Je sent que ça va etre drole : avant apres


    PS: Si j'ai fait quelques modif du code que tu m'a donné c'est parce que Eclipse me disait qu'il y avait un probleme entre les List et ArrayList

  6. #6
    BFH
    BFH est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 45
    Par défaut
    La fonction de selection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public void NOMDELAFONCTION(  )
        {
            try
    	        {
    	        String query1 = "SELECT  CHAMPS FROM TABLE";
    	        Statement stmt1 = app.conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY );
    	        ResultSet srs = stmt1.executeQuery( query1 );
    	        while (srs.next()) 
    	        	{
    	        	NOMDUBOUTON.addItem(srs.getString("CHAMPS"));
    	        	}
    	        }
            catch( SQLException e )
            	{System.out.println( e.getLocalizedMessage() );}
        }
    Le code du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {ComboBoxModel PosteModel = new DefaultComboBoxModel(new String[] {});
    NOMDUBOUTON = new JComboBox();	
    NOMDUBOUTONsetModel(PosteModel);}
     
    NOMDELAFONCTION();
    Sans oublier tout au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private JComboBox NOMDUBOUTTON;

  7. #7
    Membre Expert
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Par défaut
    Salut,
    J'ai réglé les problemes liés aux List et ArrayList avec des imports correct
    Les List et ArrayList appartiennent au package java.util, attention aux conflits avec javax.swing.List, par exemple.
    JeNeSaisPasQuelNomMettre
    Moi non plus
    J'ai simplement repris la signature de ta méthode.
    Ta méthode était statique et prenait en paramètre une Connection, j'ai fait pareil pour getNoms. En imaginant que tu ai défini cette méthode dans une classe nommée MaClasse, tu peux l'appeler ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Connection maConnection =  ...;//ta connexion à la base, comme dans ton main
    MaClasse.getNoms(maConnection);
    Et j'ai très peu de temps pour me documenter je dois rendre ce projet mardi
    Bon courage

    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JComboBox dynamique avec mutateur
    Par erky35 dans le forum Composants
    Réponses: 8
    Dernier message: 07/01/2011, 17h57
  2. [Tables liees] Lier dynamiquement avec .Connect ?
    Par Olif_C dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/06/2008, 09h19
  3. Réponses: 0
    Dernier message: 22/02/2008, 06h49
  4. [BO XIr2]5CONFIG] Probleme connection oracle avec infoview
    Par silversatch62 dans le forum Launchpad (ex-Infoview)
    Réponses: 4
    Dernier message: 06/02/2008, 16h01
  5. connection oracle avec OraDatabase
    Par pierre2410 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 30/05/2007, 11h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo