2010-05-10 2 views
1

i`m faireQuelqu'un peut-il m'aider pour la syntaxe de la requête de sélection?

string sql = "select * from publisher where title like "'"+tbproperty.text+"; 

mais il s `ne fonctionne pas!

.. ce qui a trait

+0

Que se passe - comment peut-il échouer? – Mark

+0

Pour info, il vous manque une citation finale après le littéral, mais comme la plupart des réponses et des commentaires vous le disent; ** utiliser un paramètre **. –

Répondre

0

Correction ..

string sql = "select * from publisher where title like '" + tbproperty.text + "'"; 
+0

hey écoute .. j'ai ma fonction dans ma classe mais le tbproperty ne montre pas dans ma classe .. ?? Comment fait-on ça ?? – Azka

+0

Veuillez mettre votre code ici, afin que nous puissions analyser et vérifier. –

+0

@Azka - vous seul savez où 'tbproperty' existe; Si vous faites votre accès aux données séparé de l'interface utilisateur (ce que vous devriez faire), vous devrez passer le titre désiré en tant que paramètre à votre méthode. –

9

Utilisation SqlParameter:

SqlCommand cmd = new SqlCommand("select * from publisher where title like @title"); 
cmd.Parameters.AddWithValue("@title", tbProperty.Text); 

Si vous devez ajouter au paramètre, puis procédez comme suit (Ex: paramètre de sortie):

SqlParameter param = new SqlParameter("@param ", SqlDbType.NVarChar, 250) { Direction = ParameterDirection.Output }; 
cmd.Parameters.Add(param); 

Cela signifie que vous n'avez pas besoin de construire la chaîne en soi et arrête l'injection SQL.

+3

+1 souhaite que je pourrais + 10000 votre réponse !! Toujours toujours toujours (et aucune exception) utiliser des requêtes paramétrées. –

4

Avec LIKE, si vous vous attendez commencer/fin matchs dont vous avez besoin des jokers tels que '%', et je suis en supposant que l'utilisateur n'ajoute pas ceux; mais - important: don't concatenate user input. Déjà; vous voulez quelque chose comme:

sql = "select * from publisher where title like @arg"; 

Avec @arg défini comme un paramètre, avec une valeur quelque chose comme:

cmd.Parameters.AddWithValue("@arg", "%" + tbproperty.text + "%"); 
Questions connexes