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

Résolu
dunith Messages postés 22 Statut Membre -  
dunith Messages postés 22 Statut Membre -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    Ce serait bien que l'on sache quelle est l'exception et sur quelles lignes elle porte.
    0
  2. dunith Messages postés 22 Statut Membre 54
     
    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
  3. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  4. dunith Messages postés 22 Statut Membre 54
     
    ç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. KX Messages postés 19031 Statut Modérateur 3 020
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dunith Messages postés 22 Statut Membre 54
     
    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. KX Messages postés 19031 Statut Modérateur 3 020
       
      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
  7. dunith Messages postés 22 Statut Membre 54
     
    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
  8. dunith Messages postés 22 Statut Membre 54
     
    enfin trouver, il fallait mettre un:jComboBox9.removeAllItem()
    avant la boucle while (result.next())

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