Pb de syntaxe(urgent)

cs_babylonne Messages postés 46 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 11 juillet 2007 - 20 avril 2007 à 11:49
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 - 20 avril 2007 à 16:19
 pb de syntaxe(urgent)<hr style= "COLOR: #d1d1e1" size="1" /><!-- / icon and title --><!-- message -->
Bonsoir tt le monde:

J'ai un petit souci par rapport à la sélection d'1 élement c-a-d au moment où je sélectionne un listeitem du control listbox1 , j'ai une erreur de type syntaxe que je n'arrive pas à résoudre. (chaine de connexion correct).
Voici une partie du code:

<!-- BEGIN TEMPLATE: bbcode_code -->

<asp:ListBox
ID="ListBox1"
Rows="6"

Width
="100px"

SelectionMode="Single"

runat="server">

<asp:ListItem
>Salsa
</asp:ListItem>

<asp:ListItem
>Rap
</asp:ListItem>

<asp:ListItem
>Rock
</asp:ListItem>

<asp:ListItem
>Vari‚t‚ fran‡aise
</asp:ListItem>
</asp:ListBox>

........................................................................

SqlConnection MaConnexion =
new
SqlConnection(monconnexion );

string marequˆte =
"SELECT Albums.Titre, Artistes.Pr‚nom ";marequête +=
"Artistes.Nom"; marequête+"FROM Albums INNER JOIN Artistes ON Artistes.ArtisteID Albums.ArtisteID";marequête +=

"WHERE Albums.Genre=Albums.Genre";marequête += ListBox1.SelectedItem.Text;

<!-- END TEMPLATE: bbcode_code -->
Je m'explique une derniere fois c-a-d quand je choisi , Salsa qui se trouve dans la colonne Genre de la tableAlbums et que ensuite je valide

j'ai les erreurs suivantes:

Erreur du serveur dans l'application '/projet'.
--------------------------------------------------------------------------------

Ligne 1 : syntaxe incorrecte vers '.'.
Ouvrez les guillemets avant la chaîne de caractères 'Salsa'.
Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.Data.SqlClient.SqlException: Ligne 1 : syntaxe incorrecte vers '.'.
Ouvrez les guillemets avant la chaîne de caractères 'Salsa'.

Erreur source:

Ligne 62 : MaConnexion.Open();
Ligne 63 : SqlCommand macommande = new SqlCommand(marequête, MaConnexion);
Ligne 64 : SqlDataReader monDataReader = macommande.ExecuteReader();
Ligne 65 : Repeater1.DataSource = monDataReader;
Ligne 66 : Repeater1.DataBind();
sachant qand je mets 2 " " apres where Albums.Genre j'ai plus d'erreur .
pas de pb de connexion .
Merci d'avance de votre aide.

1 réponse

cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
20 avril 2007 à 16:19
Salut,

Arg, combien de fois faudra-t-il le dire : ne pas utiliser de concaténation de chaines de caracères quand on forme des requêtes SQL !
ça cause souvent des erreurs comme la tienne du fait que tu découpes ta requêtes en petits morceaux, et surtout ça laisse une énorme faille par SQL Injection !
Il faut utiliser les SqlParameters.
Exemple :
string Requete "SELECT * FROM MaTable WHERE MonChamp @toto"
SqlParameter param = new SqlParameter("toto",SqlDbType.VarChar);
param.Value = ListBox1.SelectedItem.Text;
...
maSqlCommand.Parameters.Add(param);
... // la suite suite du code

A++

<hr width="100%" size="2" />Nurgle (Antoine) - MSP
0
Rejoignez-nous