2010-04-16 3 views
1

J'écris requête SQL à mon SqlCommand, et une partie d'entre eux ressemble à:problème avec sql comme

WHERE Path like N'+(select top 1 path from [Paths] where [email protected] and [email protected])+%' order by path desc,objecttype desc 

Je reçois aucun enregistrement, bu quand j'ai écrit le même dans sql server 2005 j'ai beaucoup lignes ...

where path like (select top 1 path from [Paths] where objectcode='eg' and objecttype='0')+'%' 

commande par chemin desc

Quel est le problème ??

@objectCode est « par exemple »

j'ai vu quelque chose:

J'oublie d'ajouter cmd.parameters, et je ne reçois pas d'erreur, donc je pense que sql est de voir ces paramètres comme normale chaîne, et ne pas la valeur à partir de là, donc:

par exemple: il se '[email protected]', et non 'objectcode='EG''

Répondre

2

SQL ne remplacera pas votre paramètre @objectcode bec Utilisez-le à l'intérieur d'une chaîne littérale.

Vous devez vous débarrasser de la chaîne littérale, utilisez quelque chose comme:

WHERE Path like (select top 1 path from [Paths] where [email protected] and [email protected])+'%' order by path desc,objecttype desc 

Avez-vous une raison pour laquelle vous joignez la sous-requête dans speechmarks? Ce n'est pas nécessaire.