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

ASP.NET Discussion :

Requête SELECT WHERE LIKE non fonctionnelle dans mon application ASP.NET C#


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 34
    Points : 21
    Points
    21
    Par défaut Requête SELECT WHERE LIKE non fonctionnelle dans mon application ASP.NET C#
    Bonjour à tous ,

    Encore une fois c'est moi, avec un petit soucis. J'essaye de créer une barre de recherche dans mon application, qui, lorsque l'on tape des mots-clef, retrace le tableau avec les éléments trouvés. Le soucis, est que j'aimerai qu'il affiche les résultats qui contiennent ce mot-clef, c'est-à-dire que si l'utilisateur entre comme mot "b", le tableau affiche tous les noms qui contiennent des "b" autant que ce soit "bertrand", que "gilbert".
    Alors j'ai testé ma requête, qui est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select UserID, UserNom, UserPrenom FROM User WHERE UserNom LIKE '%b%';
    Qui marche parfaitement.

    Par contre, quand je met cette requête dans mon code C#, cela ne fonctionne plus. Voici mon code qui se trouve lors du clique du bouton Recherche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Connexion= new SqlConnection("Data Source=**;Initial Catalog=**;Integrated Security=True");
    SqlCommand Recherche = new SqlCommand("Select UserID, UserNom, UserPrenom FROM User WHERE UserNom LIKE '%@motclef%'; ", Connexion);
    Connexion.Open();
    Recherche.Parameters.Add("@motclef", SqlDbType.NVarChar).Value = TextBoxSearch.Text.Trim();
    SqlDataReader Lecture = Recherche.ExecuteReader();
    Gridview.DataSource = Lecture;
    Gridview.DataBind();
    Le Gridview correspond au tableau. Le TextBoxSearch est la TextBox où les utilisateurs rentrent les mots-clefs. Pour le moment, je teste qu'avec un seul mot-clef. Le problème est qu'ici, les apostrophes ou les % posent soucie. Quand j'écris simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select UserID, UserNom, UserPrenom FROM User WHERE UserNom LIKE @motclef
    Cela fonctionne très bien, le seul hic c'est qu'il ne prend pas en compte les caractères d'avant et après le mot-clef, logique.
    Dès que je remet simplement des apostrophes, cela ne fonctionne plus. C'est-à-dire que je n'ai aucun tableau d'affiché:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select UserID, UserNom, UserPrenom FROM User WHERE UserNom LIKE '@motclef'
    J'ai tenté d'écrire \"%@motclef%\", cela ne fonctionne pas non plus... J'ai également tenté d'écrire en brut un exemple du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select UserID, UserNom, UserPrenom FROM User WHERE UserNom LIKE '%b%'
    Et cela échoue également...
    Bref, j'ai cherché sur le forum et je n'ai pas eu de réponse. J'avoue avoir essayé plusieurs choses mais qu'en résultat, je n'ai pas le résultat voulu. Je n'arrive même pas à comprendre l'erreur, car ma requête en elle-même fonctionne.

    Et j'aimerai également savoir comment abordé la chose si l'utilisateur rentre plusieurs mots-clef. J'imagine une boucle "Pour tous les mots-clefs rentrés...". Qu'en pensez-vous?

    Merci par avance de votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    Tu peux mettre les '%' au moment de l'ajout du paramètre et enlever les quotes dans ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SqlCommand Recherche = new SqlCommand("Select UserID, UserNom, UserPrenom FROM User WHERE UserNom LIKE @motclef;", Connexion);
     
     
    Recherche.Parameters.Add("motclef", SqlDbType.NVarChar).Value = "%" + TextBoxSearch.Text.Trim() + "%";

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    tu dois mettre directement dans ton parametre tes "%"... et la ca devrait fonctionner...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Normalement tu ne dois pas mettre le "@" dans le nom de ton paramètre. Uniquement dans la requete...

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Super, merci katkiller et Dokho1000, cela fonctionne nickel!
    Par contre, je ne savais pas pour les @. Je prend note, merci du conseil. Mais du coup j'aimerai savoir pourquoi?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Je pense pas qu'il y ai une explication particulière, c'est by design comme on dit

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par Dokho1000 Voir le message
    Je pense pas qu'il y ai une explication particulière, c'est by design comme on dit
    Ok ^^ Merci en tout cas, je rectifie toutes mes erreurs (ah bah oui, du coup j'avais mis des @ partout dans mon appli --' ) .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Encoder les caractères dans mon URL Asp.net (C#)
    Par maparè dans le forum ASP.NET
    Réponses: 18
    Dernier message: 01/03/2011, 19h43
  2. Exception non gérée dans mon application
    Par lisco dans le forum MFC
    Réponses: 1
    Dernier message: 23/11/2010, 10h09

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