Bonsoir tout le monde aidez moi avec mes codes :toujours problèmes d'exécution

DEMBELEY - Modifié le 19 oct. 2020 à 21:04
DEMBELEY Messages postés 2 Date d'inscription dimanche 18 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020 - 20 oct. 2020 à 00:36
Bonjour,
package Application;


import java.net.Socket;
import java.sql.*;


public class BDD {
    // Les declarations 
    Connection connection;
        Statement statement;
    String SQL;
    String url;
        String username;
        String password;
        Socket client;
        int port;
        String host;
        //ResultSet resultSet;
        
    public BDD(String url,String username,String password,String host,int port ){
        
           this.url=url;
           this.username=username;
           this.password=password;
           this.host=host;
           this.port=port;      
    }
    //Fonction pour se connecter à la base de données
    public Connection connexionDatabase(){
        try {
      Class.forName("com.mysql.jdbc.Driver");
      System.out.println("Driver O.K.");

      String url = "jdbc:mysql://localhost:3306/gestion_de_stock";
      String user = "root";
      String passwd = "";

      java.sql.Connection connection = DriverManager.getConnection(url, user, passwd);
      System.out.println("Connexion effective !");         
      } catch (Exception e) {
      e.printStackTrace();
  
    } 
          return connection;
         } 
    
    //Fonction pour fermer la base de données
    public Connection closeconnexion(){
        try{
            connection.close();
        
        }catch(Exception e){ System.err.println(e);
        
        }
        return connection;
    
    }
    // Fonction pour l'execution de la requete
    
    public ResultSet  exécutionQuery(String sql){
        connexionDatabase();
        
        ResultSet resultSet = null;
         
        
        try{
            statement = connection.createStatement();
            resultSet = statement.executeQuery(sql);
            System.out.println(sql);
            
        }catch(SQLException ex){
            
                System.err.println(ex);
                
                }
        
                return resultSet;
        
        }
        //Fonction pour l'execution de la requete Update
    
    public String exécutionUpdate(String sql){
         connexionDatabase();
         String result = "";
        try{
            statement = connection.createStatement();
            statement.executeUpdate(sql);
            result = sql;
            
        }catch(SQLException ex){
            result = ex.toString();
                
                }
        
                return result;
    }
    // Fonction pour afficher tous les champs de la table
    
    public ResultSet querySelectorAll(String nomTable){
        connexionDatabase();
        SQL ="SELECT * FROM " + nomTable ;
        System.out.println(SQL);
        return this.exécutionQuery(SQL);
    
    } 
    
    //Fonction pour tous  afficher avec Paramettre (etat)
    
    public ResultSet querySelectorAll(String nomTable, String etat){
        connexionDatabase();
        SQL ="SELECT * FROM " + nomTable + "WHERE" + etat ;
        
        return this.exécutionQuery(SQL);
        
        }
    //    
    public ResultSet querySelect(String[] nomColonne,String nomTable){   
    connexionDatabase();
        int i;
        SQL = "SELECT";
        for(i = 0; i <= nomColonne.length-1; i++){
        SQL += nomColonne[i];
        if (i < nomColonne.length-1){
        SQL +=",";
        }
        }
        SQL += "FROM" + nomTable;
        return this.exécutionQuery(SQL);
    
    }
    
    //
    public ResultSet FcSelectCommand(String[] nomColonne, String nomTable, String etat){
            connexionDatabase() ;
        int i;
        SQL = "SELECT";
        for(i = 0; i <= nomColonne.length-1 ; i++){
        SQL += nomColonne[i];
        if (i < nomColonne.length-1){
        SQL +=",";
        }
        }
        SQL += "FROM" + nomTable + "WHERE" + etat;
        return this.exécutionQuery(SQL);
    
    
    
    } 
    
    //Fonction d'insertion de données
    
    public String queryInsert(String nomTable, String[] contenuTableau){
        
        connexionDatabase();
        int i;
        SQL = "INSERT INTO" + nomTable + "VALUES (";
        for(i = 0; i <= contenuTableau.length-1 ; i++){
        SQL += "'" + contenuTableau[i] + "'";
        if (i < contenuTableau.length-1){
        SQL +=",";
        }
        }
        SQL += ")";
        return this.exécutionUpdate(SQL);
    

        
    }
    //
    public String queryInsert(String nomTable, String[] nomColonne, String[] contenuTableau){
        
        connexionDatabase();
        int i;
        SQL = "INSERT INTO" + nomTable + "(";
        for(i = 0; i <= contenuTableau.length-1 ; i++){
        SQL += contenuTableau[i];
        if (i < contenuTableau.length-1){
        SQL +=",";
        }
        }
        SQL +=") VALUES(";
        
        for(i = 0; i <= contenuTableau.length-1 ; i++){
        SQL += "'" + contenuTableau[i] + "'";
        if (i < contenuTableau.length-1){
        SQL +=",";
        }
        }
         SQL += ")";
        return this.exécutionUpdate(SQL);
    
    }
    
    //
    public String queryUpdate(String nomTable, String[] nomColonne, String[] contenuTableau, String etat){
        
        connexionDatabase();
       int i;
        SQL = "UPDATE" + nomTable + "SET";
        for(i = 0; i <= nomColonne.length-1 ; i++){
        SQL += nomColonne[i] +"='" +contenuTableau[i] +"='";
        if (i < nomColonne.length-1){
        SQL +=",";
        }
        }
   
         SQL += "WHERE" + etat;
        return this.exécutionUpdate(SQL);
    
    } 
    //Fonction de la requete Supprimer sans Parametre 
     
    public String queryDelete(String nomTable){
        
        connexionDatabase();
     SQL = "DELETE FROM" + nomTable;
        return this.exécutionUpdate(SQL);
    }
    
    //Fonction de la requete Supprimer avec Parametre
    
    public String queryDelete(String nomTable, String etat){
        
        connexionDatabase();
     SQL = "DELETE FROM" + nomTable +"WHERE" + etat;
       
        return this.exécutionUpdate(SQL);
    }

}



Les erreurs :
run:
Driver O.K.
Connexion effective !
Driver O.K.
Connexion effective !
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 at Application.BDD2.exécutionQuery(BDD2.java:71)
 at Application.BDD2.querySelectorAll(BDD2.java:118)
 at base_de_donnees.Login.jButton1ActionPerformed(Login.java:109)
 at base_de_donnees.Login.access$200(Login.java:17)
 at base_de_donnees.Login$3.actionPerformed(Login.java:81)
 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:6533)
 at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
 at java.awt.Component.processEvent(Component.java:6298)
 at java.awt.Container.processEvent(Container.java:2236)
 at java.awt.Component.dispatchEventImpl(Component.java:4889)
 at java.awt.Container.dispatchEventImpl(Container.java:2294)
 at java.awt.Component.dispatchEvent(Component.java:4711)
 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:2746)
 at java.awt.Component.dispatchEvent(Component.java:4711)
 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:80)
 at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
 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:80)
 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)

3 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127
19 oct. 2020 à 21:07
Bonjour,

Dans ton constructeur tu fais :
java.sql.Connection connection = DriverManager.getConnection(url, user, passwd); 

Cela signifie que tu créés une variable locale connection, cela n'initialise pas l'attribut
Connection connection;
qui est au début de tes déclarations, donc sa valeur vaut toujours null lorsque tu fais
statement = connection.createStatement();
d'où l'erreur NullPointerException.
0
Merci beaucoup pour votre remarques
Comment corriger cela?
merci d'avance.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127
19 oct. 2020 à 22:37
Écris juste
connection = DriverManager.getConnection(url, user, passwd);
sans redéclarer le type, il affectera alors la connexion à l'attribut, comme attendu.
0
Merci beaucoup pour vos réponses, je suis un débutant donc veuillez me comprendre.
je fait cela et maintenant c'est ce qui sort :
run:
Driver O.K.
Connexion effective !
Driver O.K.
Connexion effective !
SELECT * FROM  utilisateur WHERE username = ' d ' and password = ' d ' 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 at base_de_donnees.Login.jButton1ActionPerformed(Login.java:131)
 at base_de_donnees.Login.access$200(Login.java:17)
 at base_de_donnees.Login$3.actionPerformed(Login.java:81)

//////////////////
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
                      
     rs = db.querySelectorAll(" utilisateur ", " username = ' " 
                                + txt_username.getText()
                                + " ' and password = ' "
                                +txt_password.getText() + " ' ") ; 
     
        
        try{
             while (rs.next()){
                    username1 = rs.getString("username");
                    password1 = rs.getString("password");
                          hak = rs.getString("type"); 
            }
        
        
        }catch(SQLException ex){
            
        Logger.getLogger(Login.class.getName()).log(Level.SEVERE,null,ex);
        }
             if(username1 == "" && password1 == ""){
              JOptionPane.showMessageDialog(this, "le nom utilisateur ou le mot de passe est incorrect");
                
             } else {
                     if(hak.equals("directeur")){
                     Principale h = new Principale();
                     h.setVisible(true);
                     this.dispose();
                     
                     
                    }else{
                    Caissier k = new Caissier();
                    k.setVisible(true);
                    //this.dispose();
         }
     
     
     } 
       
       
    }
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127
19 oct. 2020 à 23:28
La trace de l'exception dit exactement où est le problème, c'est ligne 131, mais n'ayant pas le code exact je ne peux pas deviner à quelle instruction cela correspond, mais en général un NullPointerException se produit lorsque l'on fait quelque chose comme
x.y
alors que x vaut null, dans ce cas là correction consiste à donner une valeur à x.
0
DEMBELEY Messages postés 2 Date d'inscription dimanche 18 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
20 oct. 2020 à 00:36
D'accord une fois de plus 1000 merci . je vais essayer ça ,si vous voulez je vous envoie le programme en entier , vous permettant de voir clairement et on corrige ensemble mes erreurs de débutant
0
Rejoignez-nous