Gestion des requêtes paramétrées avec Databinding.Filter

nathanoj12 Messages postés 4 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 11 mars 2011 - 11 mars 2011 à 16:09
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 11 mars 2011 à 17:06
Salut,

SVP je travaille sur un projet et en mode déconnecté (le projet a déjà géré automatiquement les TableAdapter et les DataBinding).Mon souci c'est la gestion des requêtes paramétrées avec le DataBinding.
Auparavant j'utilisais ce code là dans l'évènement TextChanged
private void textBoxRecherche_TextChanged(object sender, EventArgs e)
{
this.medicamentBindingSource.Filter = "designation like '" + textBoxRecherche.Text + "%'";
}
Ca marche très bien mais le hic c'est qu'il est victime des injections sql.
Donc quand j'essaie de faire les requêtes paramétrées ca me donne ca
private void textBoxRecherche_TextChanged(object sender, EventArgs e)
{
medicamentTableAdapter.Adapter.SelectCommand.Parameters.Add("@designation", SqlDbType.VarChar, 80).Value = textBoxRecherche.Text + "%";
this.medicamentBindingSource.Filter = "designation LIKE @design";
}
Mais il me ramène comme erreur impossible de trouver la colonne [@design].
J'espère que j'ai été clair oh.Aidez moi SVP je prends toutes les propositions à moins que celles-ci me débarrassent des injections sql .

Merci bien et bonne journée

3 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
11 mars 2011 à 16:16
Salut,

je connais pas ton contexte particulier mais j'utilise les command parameters assez souvent. Première chose à voir :tu add un param que t'appelles @designation et que tu références par la suite dans ta requête par @design, c'est normal ? ^^
0
nathanoj12 Messages postés 4 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 11 mars 2011
11 mars 2011 à 16:54
excuse frangin c'est une erreur dans mon projet voici ce que j'ai mis
private void textBoxRecherche_TextChanged(object sender, EventArgs e)
{
medicamentTableAdapter.Adapter.SelectCommand.Parameters.Add("@design", SqlDbType.VarChar, 80).Value = textBoxRecherche.Text + "%";
this.medicamentBindingSource.Filter = "designation LIKE @design";

}

Donc voilà j'ai rectifié mais c'est toujours la même erreur que le code me renvoie
Au fait dans cette zone là quand je saisis des lettres automatiquement mon datagrid affiche les noms des médicaments commençant par ce que je suis en train de taper et cela au fur et à mesure.Le medicamentBindingsource m'a été généré avec le medicamentTableAdapter.J'espere ke c'est un peu clair merci
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
11 mars 2011 à 17:06
TableAdapter, BindingSource ... c'est pas des trucs que j'utilise, quand je requête un SGBD je le fais en brut ;)

Quelques idées :
- ton SGBD s'attends à des param du type '?param' et non '@param' (c'est le cas de MySQL il me semble) mais ça m'étonnerait,
- BindingSource.Filter est un filtre de surface, il filtre APRES que la requête soit lancée, du coup le param n'a pas de sens pour lui (je penche plus pour celle-là).

Et sinon, si tu as peur des injections SQL tu peux te faire une petite fonction perso string SqlEncode(string) à la place de l'utilisation des command params ;)
0
Rejoignez-nous