Problème avec la syntaxe mysql

Fermé
allassanek007 Messages postés 5 Date d'inscription mardi 23 février 2016 Statut Membre Dernière intervention 23 mars 2016 - 23 févr. 2016 à 12:09
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 23 févr. 2016 à 23:38
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

Utilisateur anonyme
23 févr. 2016 à 23:30
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
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 23/02/2016 à 23:48
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
Utilisateur anonyme
23 févr. 2016 à 12:18
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
allassanek007 Messages postés 5 Date d'inscription mardi 23 février 2016 Statut Membre Dernière intervention 23 mars 2016
23 févr. 2016 à 23:25
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
Regis59 Messages postés 21143 Date d'inscription mardi 27 juin 2006 Statut Contributeur sécurité Dernière intervention 22 juin 2016 1 320
23 févr. 2016 à 12:18
Salut,

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

A+
0

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

Posez votre question
allassanek007 Messages postés 5 Date d'inscription mardi 23 février 2016 Statut Membre Dernière intervention 23 mars 2016
Modifié par KX le 23/02/2016 à 23:29
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