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:
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:
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:
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é:
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:
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.
Partager