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

Résolu
dunith Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
dunith Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
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 :)




A voir également:

7 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
dunith Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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

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

Posez votre question
dunith Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
dunith Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   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
dunith Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   54
 
enfin trouver, il fallait mettre un:jComboBox9.removeAllItem()
avant la boucle while (result.next())

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