Problème avec la syntaxe mysql

allassanek007 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
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
allassanek007 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Contributeur sécurité Dernière intervention   1 322
 
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   Statut Membre Dernière intervention  
 
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