Menu

Récupérer le résultat d'une requêtes dans un [Résolu/Fermé]

Messages postés
20
Date d'inscription
samedi 11 juin 2011
Statut
Membre
Dernière intervention
3 octobre 2012
- - Dernière réponse : 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 :)




Afficher la suite 

7 réponses

Messages postés
15999
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
20 juin 2019
2370
0
Merci
Ce serait bien que l'on sache quelle est l'exception et sur quelles lignes elle porte.
Messages postés
20
Date d'inscription
samedi 11 juin 2011
Statut
Membre
Dernière intervention
3 octobre 2012
53
0
Merci
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();
}
}

Messages postés
15999
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
20 juin 2019
2370
0
Merci
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
Messages postés
20
Date d'inscription
samedi 11 juin 2011
Statut
Membre
Dernière intervention
3 octobre 2012
53
0
Merci
ç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?
KX
Messages postés
15999
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
20 juin 2019
2370 -
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));
Messages postés
20
Date d'inscription
samedi 11 juin 2011
Statut
Membre
Dernière intervention
3 octobre 2012
53
0
Merci
désoler j'ai mal formuler ma question enfaite la duplication se passe au niveau des lignes (3ligne et 3fois les mémes ligne3)
KX
Messages postés
15999
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
20 juin 2019
2370 -
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));
}
Messages postés
20
Date d'inscription
samedi 11 juin 2011
Statut
Membre
Dernière intervention
3 octobre 2012
53
0
Merci
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 :)
Messages postés
20
Date d'inscription
samedi 11 juin 2011
Statut
Membre
Dernière intervention
3 octobre 2012
53
0
Merci
enfin trouver, il fallait mettre un:jComboBox9.removeAllItem()
avant la boucle while (result.next())

voilà voilà? Merci KX pr votre aide.