Partage
  • Partager sur Facebook
  • Partager sur Twitter

UCanAccess NullPointerException sur requête INSERT

Sujet résolu
    8 novembre 2015 à 15:15:33

    Bonjour,

    Comme expliqué dans le titre j'utilise UCanAccess pour accéder à une base de données, et quand j'essaie de faire une requête INSERT INTO j'obtiens une exception.


    Voici le code "principal" :

        public void ajouterSerie(String titre) {
            String requete = "INSERT INTO Séries (Titre, [Nombre épisodes], [En cours]) VALUES (?,0,true)";
            try {
                connexion.executerPreparedRequete(requete, "test");
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }

    La table "Séries" contient les champs "Titre" (texte), "Nombre épisodes" (entier), "Résolution" (texte, plusieurs valeurs autorisées) , "En cours"(Oui/non) et "Dossier parent" (texte).
    La requête ne touche pas au champ "Résolution" mais vu qu'il autorise plusieurs valeurs ça peut peut-être poser problème ?

    Et le code de la méthode "executerPreparedRequete" :

    public ResultSet executerPreparedRequete(String requete, String  ... args) throws SQLException {
            ResultSet res = null;
            try (PreparedStatement prepared = connexion.prepareStatement(requete, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE)) {
                //mise en place des paramètres pour le PreparedStatement
                for (int i = 0; i < args.length; i++) {
                    if (args[i].startsWith("(int)")) {
                        prepared.setInt(i+1, Integer.parseInt(args[i].replace("(int)", "")));
                    }
                    else {
                        if (args[i].startsWith("(bool)")) {
                            prepared.setBoolean(i+1, Boolean.parseBoolean(args[i].replace("(bool)", "")));
                        }
                        else {
                            prepared.setString(i+1, args[i]);
                        }
                    }
                }
                
                if (requete.startsWith("SELECT")) {
                    res = prepared.executeQuery();
                }
                //si la requete est une UPDATE ou une INSERT
                else {
                    prepared.executeUpdate();
                }
                prepared.close();
            }
            return res;
        }


    Faire une requête UPDATE fonctionne très bien, et la requête INSERT fonctionne car ma base de données est bien modifiée comme je veux, mais ça me fait cette exception :

    java.lang.NullPointerException
    	at net.ucanaccess.commands.InsertCommand.persist(InsertCommand.java:122)
    	at net.ucanaccess.jdbc.UcanaccessConnection.flushIO(UcanaccessConnection.java:315)
    	at net.ucanaccess.jdbc.UcanaccessConnection.commit(UcanaccessConnection.java:205)
    	at net.ucanaccess.jdbc.AbstractExecute.executeBase(AbstractExecute.java:161)
    	at net.ucanaccess.jdbc.ExecuteUpdate.execute(ExecuteUpdate.java:50)
    	at net.ucanaccess.jdbc.UcanaccessPreparedStatement.executeUpdate(UcanaccessPreparedStatement.java:253)
    	at Wakanim.Classes.Connexion.executerPreparedRequete(Connexion.java:101)
    	at Wakanim.Modele.WakanimModele.ajouterSerie(WakanimModele.java:59)
    	at Wakanim.Controler.WakanimControler.ajouterSerie(WakanimControler.java:61)
    	at Wakanim.Vue.Fenetre$BoutonListener.actionPerformed(Fenetre.java:251)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    	at java.awt.Component.processMouseEvent(Component.java:6535)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    	at java.awt.Component.processEvent(Component.java:6300)
    	at java.awt.Container.processEvent(Container.java:2236)
    	at java.awt.Component.dispatchEventImpl(Component.java:4891)
    	at java.awt.Container.dispatchEventImpl(Container.java:2294)
    	at java.awt.Component.dispatchEvent(Component.java:4713)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    	at java.awt.Container.dispatchEventImpl(Container.java:2280)
    	at java.awt.Window.dispatchEventImpl(Window.java:2750)
    	at java.awt.Component.dispatchEvent(Component.java:4713)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    	at java.awt.EventQueue.access$500(EventQueue.java:97)
    	at java.awt.EventQueue$3.run(EventQueue.java:709)
    	at java.awt.EventQueue$3.run(EventQueue.java:703)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    	at java.awt.EventQueue$4.run(EventQueue.java:731)
    	at java.awt.EventQueue$4.run(EventQueue.java:729)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.2 null
    	at net.ucanaccess.jdbc.UcanaccessPreparedStatement.executeUpdate(UcanaccessPreparedStatement.java:256)
    	at Wakanim.Classes.Connexion.executerPreparedRequete(Connexion.java:101)
    	at Wakanim.Modele.WakanimModele.ajouterSerie(WakanimModele.java:59)
    	at Wakanim.Controler.WakanimControler.ajouterSerie(WakanimControler.java:61)
    	at Wakanim.Vue.Fenetre$BoutonListener.actionPerformed(Fenetre.java:251)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    	at java.awt.Component.processMouseEvent(Component.java:6535)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    	at java.awt.Component.processEvent(Component.java:6300)
    	at java.awt.Container.processEvent(Container.java:2236)
    	at java.awt.Component.dispatchEventImpl(Component.java:4891)
    	at java.awt.Container.dispatchEventImpl(Container.java:2294)
    	at java.awt.Component.dispatchEvent(Component.java:4713)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    	at java.awt.Container.dispatchEventImpl(Container.java:2280)
    	at java.awt.Window.dispatchEventImpl(Window.java:2750)
    	at java.awt.Component.dispatchEvent(Component.java:4713)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    	at java.awt.EventQueue.access$500(EventQueue.java:97)
    	at java.awt.EventQueue$3.run(EventQueue.java:709)
    	at java.awt.EventQueue$3.run(EventQueue.java:703)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    	at java.awt.EventQueue$4.run(EventQueue.java:731)
    	at java.awt.EventQueue$4.run(EventQueue.java:729)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    Caused by: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.2 null
    	at net.ucanaccess.jdbc.UcanaccessConnection.commit(UcanaccessConnection.java:212)
    	at net.ucanaccess.jdbc.AbstractExecute.executeBase(AbstractExecute.java:161)
    	at net.ucanaccess.jdbc.ExecuteUpdate.execute(ExecuteUpdate.java:50)
    	at net.ucanaccess.jdbc.UcanaccessPreparedStatement.executeUpdate(UcanaccessPreparedStatement.java:253)
    	... 40 more
    Caused by: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.2 null
    	at net.ucanaccess.jdbc.UcanaccessConnection.flushIO(UcanaccessConnection.java:346)
    	at net.ucanaccess.jdbc.UcanaccessConnection.commit(UcanaccessConnection.java:205)
    	... 43 more
    Caused by: java.lang.NullPointerException
    	at net.ucanaccess.commands.InsertCommand.persist(InsertCommand.java:122)
    	at net.ucanaccess.jdbc.UcanaccessConnection.flushIO(UcanaccessConnection.java:315)
    	... 44 more

    Si vous pouviez bien m'aider, parce que j'ai pas mal cherché mais je n'ai trouvé nulle part quelque chose qui contenait ne serait-ce que le début du message d'erreur.

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      7 février 2016 à 20:02:45

      J'ai résolu mon problème, cela venait bien du champ "Résolution" qui peut avoir deux valeurs donc j'ai dû modifier ma base de données.
      • Partager sur Facebook
      • Partager sur Twitter

      UCanAccess NullPointerException sur requête INSERT

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown