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

Résolu/Fermé
dunith Messages postés 20 Date d'inscription samedi 11 juin 2011 Statut Membre Dernière intervention 3 octobre 2012 - 18 mars 2012 à 13:01
dunith Messages postés 20 Date d'inscription samedi 11 juin 2011 Statut Membre Dernière intervention 3 octobre 2012 - 19 mars 2012 à 21:46
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 :)




7 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
18 mars 2012 à 13:03
Ce serait bien que l'on sache quelle est l'exception et sur quelles lignes elle porte.
0
dunith Messages postés 20 Date d'inscription samedi 11 juin 2011 Statut Membre Dernière intervention 3 octobre 2012 54
18 mars 2012 à 13:07
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
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 18/03/2012 à 13:14
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
dunith Messages postés 20 Date d'inscription samedi 11 juin 2011 Statut Membre Dernière intervention 3 octobre 2012 54
18 mars 2012 à 13:29
ç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
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
18 mars 2012 à 13:36
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dunith Messages postés 20 Date d'inscription samedi 11 juin 2011 Statut Membre Dernière intervention 3 octobre 2012 54
18 mars 2012 à 13:42
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
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
18 mars 2012 à 14:06
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
dunith Messages postés 20 Date d'inscription samedi 11 juin 2011 Statut Membre Dernière intervention 3 octobre 2012 54
18 mars 2012 à 14:15
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
dunith Messages postés 20 Date d'inscription samedi 11 juin 2011 Statut Membre Dernière intervention 3 octobre 2012 54
19 mars 2012 à 21:46
enfin trouver, il fallait mettre un:jComboBox9.removeAllItem()
avant la boucle while (result.next())

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