IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Requête SQL WHERE : no such column error


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2020
    Messages : 6
    Points : 9
    Points
    9
    Par défaut Requête SQL WHERE : no such column error
    Bonjour, pour une appli Android sur le COVID19, j'essaie de faire une requête SQL qui récupère un ID en fonction de deux String nom et prenom récupérés à partir du click sur un item d'une ListView.

    Quand je fais la requête sans utiliser de paramètres du tout, donc :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    String selectQuery = "SELECT * FROM " + TABLE_MEDECINS;

    çà fonctionne et l'ID est récupéré, mais quand j'ajoute les deux paramètres, çà me renvoie tout le temps l'erreur suivante :

    no such column: Hunt (code 1): , while compiling: SELECT * FROM medecins WHERE medecin_prenom LIKE Ethan AND medecin_nom LIKE Hunt
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    String selectQuery = "SELECT * FROM " + TABLE_MEDECINS + "WHERE " + COLUMN_PRENOM_MEDECIN + "= " + firstName + " AND" + COLUMN_NOM_MEDECIN + "= " + name + "";

    J'ai essayé de remplacer les "=" par des "LIKE", mais j'obtiens la même erreur.

    La requête de création de la table semble bonne également.

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private static final String CREATE_TABLE_MEDECINS =
                "CREATE TABLE " + TABLE_MEDECINS + "("
                        + COLUMN_ID_MEDECIN + "INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "
                        + COLUMN_NOM_MEDECIN + " TEXT, "
                        + COLUMN_PRENOM_MEDECIN + " TEXT, "
                        + COLUMN_MEDECIN_RPPS + "TEXT, "
                        + COLUMN_MEDECIN_MAIL + "TEXT, "
                        + COLUMN_MEDECIN_PORTABLE + "TEXT, "
                        + COLUMN_MEDECIN_VILLE + "TEXT, "
                        + COLUMN_MEDECIN_CODE_POSTAL + "TEXT, "
                        + COLUMN_MEDECIN_MOT_DE_PASSE + "TEXT " + ")";


    En utilisant un id numérique comme critère de recherche, cela semble également fonctionner.

    Après recherche sur Internet, je n'ai pas trouvé de raison pour laquelle la requête marche avec un INTEGER et pas un String. Du coup, je ne vois pas d'où vient le problème.

    Est-ce que quelqu'un aurait une idée ?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 439
    Points
    28 439
    Par défaut
    En SQL, une chaine de caractères doit être encadrée d'apostrophes (single quote).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String selectQuery = "SELECT * FROM " + TABLE_MEDECINS 
    + " WHERE " + COLUMN_PRENOM_MEDECIN + " = '" + firstName + "' AND " 
    + COLUMN_NOM_MEDECIN + " = '" + name + "'";
    Il faut aussi faire attention aux espaces entre les mots clés et les noms d'objet.

    Par ailleurs, une telle construction de requête est la porte ouverte aux injections SQL. On privilégiera l'usage de requêtes paramétrées.

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/07/2016, 10h31
  2. Erreur requête sql where
    Par malhek69 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/04/2016, 17h16
  3. [SQL] Requête et WHERE
    Par The Rocket dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 28/08/2007, 21h57
  4. [SQL] Requête sql où la condition where ne sert pas
    Par gRaNdLeMuRieN dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/05/2007, 09h26
  5. Requête sql dans une clause Where
    Par PrinceMaster77 dans le forum Requêtes
    Réponses: 5
    Dernier message: 26/07/2006, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo