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.