Bonsoir tout le monde,
C'est encore moi (à croire que je passe ma vie sur les forums... Presque), suite à ce topic...
Alors voilà, j'ai une barre de recherche sur mon site web en ASP.NET, qui permet d'afficher dans un tableau le résultat de ce qu'à taper l'utilisateur. Mon code fonctionne quand l'utilisateur ne rentre qu'un seul mot, par contre dès qu'il veut en rentrer plusieurs, c'est la cata.
Je cherche depuis le début de l'aprem une solution: J'ai regardé s'il était possible de mettre plusieurs valeurs à un "LIKE" comme on peut le faire avec un "IN" mais nada.. Enfin on ne peut pas d'après ce que j'ai lu. Et remplacer mon "LIKE" par un "IN" changerait toute la donne... Voici mon code (en C#) pour le moment, qui se déroule lors du clique du bouton "Rechercher", une fois que l'utilisateur a tapé les mots recherchés:
Mon Gridview correspond donc à un tableau récapitulatif de ma recherche, et le TextBoxSearch, aux mots rentrés par l'utilisateur. Quand je teste avec un seul mot, pas d'erreur. Par contre, quand je teste avec deux, j'ai l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Connexion = new SqlConnection("Data Source=**;Initial Catalog=**;Integrated Security=True"); SqlCommand Recherche = new SqlCommand("Select UserID, UserNom, UserPrenom FROM User WHERE UserNom LIKE @motclef OR UserPrenom LIKE @motclef", Connexion); Connexion.Open(); String[] words = TextBoxSearch.Text.Split(' '); foreach (String word in words) { Recherche.Parameters.Add("motclef", SqlDbType.NVarChar).Value = '%' + word + '%'; } SqlDataReader Lecture = Recherche.ExecuteReader(); Gridview.DataSource = Lecture; Gridview.DataBind(); Lecture.Close();
"Le nom de variable '@motclef' a déjà été déclaré. Les noms de variables doivent être uniques dans un traitement de requêtes ou une procédure stockée."
Ce qui est normal puisque dans ma boucle ma variable est "créée" plusieurs fois. Or, je n'ai pas d'autres idées de comment faire... J'ai tenté avec une boucle While mais idem.
Comment je pourrai stocker cette variable et la reprendre ensuite dans ma requête? Je m'y prend peut être pas comme il faut...
Partager