Exception sur query

greglover Messages postés 58 Date d'inscription mardi 16 janvier 2007 Statut Membre Dernière intervention 10 mars 2008 - 6 sept. 2007 à 16:38
greglover Messages postés 58 Date d'inscription mardi 16 janvier 2007 Statut Membre Dernière intervention 10 mars 2008 - 6 sept. 2007 à 22:37
Bonjour,

j'ai un petit soucis je me retrouve avec ce bug ci :

java.lang.NullPointerException
    at DataBaseImpl.query(DataBaseImpl.java:103)
    at Cantine.credit(Cantine.java:415)
    at Cantine.go_calcul(Cantine.java:393)
    at Cantine$4.actionPerformed(Cantine.java:563)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

en fait, j'aurai bien trouvé tout seul mais il survient aléatoirement. En validant les changements faits dans une JTable, ça envoie des résultats à la bdd. Et je me retrouve avec cette erreur au moins 1 fois sur 10 validation et donc 10 envoi vers la bdd.

voici la méthode query et la ligne 103 est en rouge :

public ResultSet query(String requete) throws DataBaseException {
                if(!ok) {
                    throw new DataBaseException("paramètre non initialiser");
                }

                if(requete == null) {
                    return null;
                }

                try {
                        return (ResultSet) st.executeQuery(requete);
                }
                catch(SQLException e) {  
                    throw new DataBaseException(e); 
                }
        }

voici la requête construite puis envoyée :
SELECT enfant.nom_enfant,enfant.prenom_enfant,enfant.cantine_total_enfant,credit.montant_credit FROM credit,enfant WHERE enfant.nom_enfant '"+nom.replace("'", "''")+"' AND enfant.prenom_enfant '"+prenom.replace("'", "''")+"' AND enfant.id_enfant=credit.id_enfant

En fait, j'ai vérifié les requêtes en faisant un println de la requete mais elle est bien remplie même lorsque sa bug.

Quelqu'un peut il m'aider ?

4 réponses

KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
6 sept. 2007 à 16:51
Bonjour,

Ce que tu retournes, n'est pas ta requete comme tu l'écris, mais le résultat de ta requete, peut etre que je me trompe, mais essaie de récupérer dans une variable var= (ResultSet) st.executeQuery(requete); et regarde si dans le cas d'un résultat vide si ça te génère le nullpointerexception...

Kenza (f)
0
greglover Messages postés 58 Date d'inscription mardi 16 janvier 2007 Statut Membre Dernière intervention 10 mars 2008
6 sept. 2007 à 21:16
tout d'abord merci pour ta réponse

j'ai fais un print du résultat de ma requete comme tu me l'a conseillé à cela me donne toujours un truc de cette forme :

com.mysql.jdbc.ResultSet@1931942

erreur ou pas. Je ne sais aps si c'est normal, je n'avais jamais fait de print d'un resultset.
0
mythrys Messages postés 2 Date d'inscription vendredi 10 décembre 2004 Statut Membre Dernière intervention 6 septembre 2007
6 sept. 2007 à 21:46
si cette ligne provoque un null pointeur exception
return (ResultSet) st.executeQuery(requete);

c'est soit que requete est null mais tu nous affirme que non, soit que st est null

et si c'est ca c'est qu'il y a une erreur dans open()
0
greglover Messages postés 58 Date d'inscription mardi 16 janvier 2007 Statut Membre Dernière intervention 10 mars 2008
6 sept. 2007 à 22:37
j'ai testé cette partie de mon prog avec un seul élève plutot que les 280. Et là, impossible de faire bugguer le truc.

Donc, cela m'amène1 question :

est ce que un grand flux de donnée peut provoquer un trop d'informations à traiter ?
    tellement d'élève que java a plus le temps d'attribuer les variables et du coup se retrouve avec des var null d'ou le npe.

Merci d'avance

A+
0
Rejoignez-nous