Problème avec la syntaxe mysql

allassanek007 Messages postés 7 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour, je développe une application de gestion de stock en java, j'ai déjà créé la base de donnée avec phpmyadmin, mais lorsque je compile le projet, je demande à l'utilisateur de saisir son nom d'utilisateur et son mot de passe, et quand je valide, la fenêtre qui doit s'ouvrir ne s'affiche pas mais plutôt ce message d'erreur : "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROMutlisateurWHEREusername''and password=''' at line 1. et je n'arrive plus à progresser depuis. svp quelqu'un peut-il m'aider ??

5 réponses

  1. Utilisateur anonyme
     
    je regarde dans mon code je ne vois pas d'erreur
    Je t'ai dit qu'il manquait des espaces.
    Dans ton code, tu oublies la plupart des espaces. Je prends au hasard :
    SQL = "SELECT * FROM" + nomTable + "WHERE" + état;

    Où est l'espace entre FROM et le nom de la table ?
    Où est l'espace entre le nom de la table et WHERE ?
    Où est l'espace entre WHERE et la condition qui suit ?
    1
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Comme indiqué précédemment tu as des problèmes avec les espaces.

    Par exemple tu as
    SQL = "SELECT * FROM" + nomTable + "WHERE" + état;
    alors qu'il faudrait écrire
    SQL = "SELECT * FROM " + nomTable + " WHERE " + état;
    ...

    Remarque (juste pour cette ligne, mais il y aurait tellement de chose à dire sur le reste du code) :
    • n'utilises pas d'accent dans les noms en Java (comme
      état
      ici), une fois compilé
    • respectes les conventions de nommages, comme par exemple les noms de variables en minuscule (donc
      sql
      et non
      SQL
      )
    • utilises des noms de variables/méthodes en anglais, toutes les API Java sont en anglais, par exemple
      queryDelete(String nomtable)
      ça pique...
    • attention à l'injection SQL, en ne faisant aucun contrôle sur les paramètres que tu concatènes, cela t'exposes à des failles de sécurité importantes. Exemple :
      String nomTable = "DUAL; DROP maTable; //", état = "";
      ce qui donne la requête
      SELECT * FROM DUAL; DROP maTable; // WHERE
      ... bonjour les dégâts !
    1
  3. Utilisateur anonyme
     
    Bonjour

    En fait, tu as plusieurs erreurs :
    - Il faut des espaces entre les mots
    "FROM utilisateur WHERE username…"
    .
    - Il faut un = entre username et ''
    - As-tu bien écrit le nom de la table utlisateur ? Ce ne serait pas plutôt utilisateur ?
    - Tu récupères probablement mal les nom et mot de passe rentrés par l'utilisateur, car il apparaissent vides.
    Corrige d'abord ce que tu peux puis donne-nous le nouveau message d'erreur et les lignes de code où tu récupères les variables, jusqu'à la requête.
    0
    1. allassanek007 Messages postés 7 Statut Membre
       
      c'est le message d'erreur qui s'affiche comme ça sans espace pourtant je regarde dans mon code je ne vois pas d'erreur. Je suis totalement confus.
      0
  4. Regis59 Messages postés 21143 Date d'inscription   Statut Contributeur sécurité Dernière intervention   1 349
     
    Salut,

    Copie colle ta requête qui est dans ton code ici.

    A+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. allassanek007 Messages postés 7 Statut Membre
     
    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;
         
         
      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 faire connexion a la base de données 
     public Connection connexionDatabase() {
         try {
                    Class.forName("com.mysql.jdbc.Driver");
                    
         connection = DriverManager.getConnection(url, username, password);
         } catch (Exception e)
         {System.err.println(e.getMessage());
         
         }
         return connection;
         }
     
     
     
     
     // fontion pour fermer la base de données 
         
     public Connection closeconnexion() {
        
        try {
            connection.close();
        } catch (Exception e) {System.err.println(e);
        }
        return connection; 
    }
     
    
      
      // pour l'execution de requette
      
     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;
         }
     
     
     // pour exection de requette 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 de requette pour afficher tout
     public ResultSet querySelectAll(String nomTable) {
         
         connexionDatabase ();
         SQL = "SELECT * FROM " + nomTable;
         System.out.println(SQL); 
         return this.exécutionQuery(SQL);
     }
    
     // fontion pour afficher tout avec le parametre ("état")
     public ResultSet querySelectAll(String nomTable, String état) {
         
     connexionDatabase ();
     SQL = "SELECT * FROM" + nomTable + "WHERE" + état;
     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 état) {
            
            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" + état;
            return this.exécutionQuery(SQL);
            
        }
        
        
     
     //fonction d'enrer 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 <= nomColonne.length - 1; i++) {
                SQL += nomColonne[i];
                    if (i < nomColonne.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 état) {
           
           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" + état;
      return this.exécutionUpdate(SQL);
        }
      
      
      
    //fonction pour la requette supprimer sans parametre
      public String queryDelete (String nomtable) {
          
          connexionDatabase ();
          SQL = "DELETE FROM" + nomtable;
          return this.exécutionUpdate(SQL);
      }
      
      
      
      //fontion pour la requette supprimer avec parametre 
      
      public String queryDelete (String nomtable, String état) {
          
          connexionDatabase ();
          SQL = "DELETE FROM" + nomtable + " WHERE " + état;
          return this.exécutionUpdate(SQL);
    
        }
      
    }
    0