Récupérer le résultat d'une requêtes dans un

Résolu
Bonjour,

Une question peut être basique pour certain: je suis sur netbeans et je veux récupérer le résultat de ma requêtes dans un jComboBox, donc j'ai procéder comme ça:

private void jComboBox9MousePressed(java.awt.event.MouseEvent evt) {
Combo9();
}

public void Combo9(){
try {
String requeteMysql = "select name from disc";//chaine contenant la requete a executée
result = (ResultSet) new CConnect().stat.executeQuery(requeteMysql);//excuter la requete et la mettre dans une variabale ResulatSet
while (result.next())
{
String combo = result.getString("name");
jComboBox9.addItem(combo);
}
result.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
}

et là il me génère une exception, pourquoi je sais pas
quelqu'un pourra m'aider svp.
Merci :)



--
La vie est un mystère qu'il faut vivre, et non un problème à résoudre.

7 réponses

  1. Modérateur
    Ce serait bien que l'on sache quelle est l'exception et sur quelles lignes elle porte.
    0
    1. c'est sur la ligne:
      result = (ResultSet) new CConnect().stat.executeQuery(requeteMysql);
      (Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException)

      ma classe CCOnnect est:

      public Connection connect=null;
      public Statement stat=null;

      static {
      try {
      Class.forName("com.mysql.jdbc.Driver");
      } catch (ClassNotFoundException e) {
      System.out.println ("Driver non trouve");
      }catch(Exception b){
      System.out.println ("Problème sur chargement de driver JDBC");
      }
      }

      public void mysql(){
      try{
      connect = DriverManager.getConnection("jdbc:mysql://localhost/mydb","root","admin");
      stat = connect.createStatement();
      }catch(SQLException e){
      e.printStackTrace();
      }
      }

      0
      1. Modérateur
        C'est parce stat vaut null !
        public Statement stat=null;
        Il faut que tu appelles la méthode mysql pour initialiser sa valeur :

        CConnect() c = new CConnect();
        c.mysql();
        result = (ResultSet) c.stat.executeQuery(requeteMysql);

        Ou mieux, inclure mysql dans le code du constructeur de CConnect :

        public CConnect() 
        {
            mysql();
        }
        La confiance n'exclut pas le contrôle
        0
        1. ça marche merci, mais le souci, j'ai trois colonne et il m'affiche trois fois les nom des colonnes

          while (result.next())
          {
          String combo = result.getString("name");
          jComboBox9.addItem(combo);
          }
          cette condition est-elle bien?
          0
          1. Modérateur
            Le problème n'est pas sur la condition, mais sur le remplissage, tu fais toujours appel à la même colonne avec result.getString("name");

            Il faudrait que tu récupères les colonnes une à une :

            for (int columnIndex=1; result.next(); columnIndex++)
                jComboBox9.addItem(result.getString(columnIndex));
            0
        2. désoler j'ai mal formuler ma question enfaite la duplication se passe au niveau des lignes (3ligne et 3fois les mémes ligne3)
          0
          1. Modérateur
            Autant pour moi, j'avoue ne pas être trop familier avec la partie JDBC de Java ;-)

            result.next() passe d'une ligne à l'autre, ça n'agit pas sur les colonnes.
            Voici un code qui insère chaque objet, ligne par ligne, mais je ne sais pas si ce que tu veux.

            int columnCount = result.getMetaData().getColumnCount();
            while (result.next) // on change de ligne
            {
                //System.out.println(result.getRow());
                for (int columnIndex=1; columnIndex<=columnCount; columIndex++)
                    jComboBox9.addItem(result.getObject(columnIndex));
            }
            0
        3. je cherche à avoir juste les ligne d'une colonne, j'arrive à afficher les ligne mais avec une duplication (3fois)

          Merci, vous m'avez beaucoup aider :)
          0
          1. enfin trouver, il fallait mettre un:jComboBox9.removeAllItem()
            avant la boucle while (result.next())

            voilà voilà? Merci KX pr votre aide.
            0