2010-10-13 4 views
2

Nous utilisons ADO.NET avec des requêtes paramétrées avec SQL Server à l'aide de l'objet DBCommand, donc le symbole est @ et tout a bien fonctionné. Cependant, nous avons maintenant une requête où @ fait partie des données codées en dur. Par défaut, ADO.NET pense que c'est un paramètre et que tout se passe en forme de poire.Comment faire pour échapper le symbole de paramètre dans ADO.NET

Existe-t-il un moyen d'échapper à la @ dans ce cas-ci, il est donc traité comme faisant partie des données? J'ai essayé \@ mais cela n'a pas fonctionné non plus.

+0

Pouvez-vous donner un exemple de la chaîne de commande – softveda

+0

Je ne peux pas donner l'exemple exact, mais si vous avez fait quelque chose comme command.text = "SELECT * from users email_address = '[email protected]'" où les données est codé en dur. Si vous essayez d'utiliser cette commande DBC avec un DataAdapter pour remplir un DataSet, vous n'obtenez pas d'erreur mais vous obtenez un résultat vraiment inattendu: le DataTable dans le DataSet était vide et je veux dire complètement vide, pas même les définitions de colonne! Donc ce n'est pas comme si la requête renvoyait 0 enregistrements, le processus entier a déraillé quelque part. Si nous enlevons le '@' alors nous obtenons des définitions de schéma et de colonne mais 0 enregistrements (ce qui est bien). – c17r

Répondre

-1

Ne pas coder en dur la valeur. Toujours utiliser les paramètres même pour les valeurs de code statique statique dans SQL pour empêcher l'introduction ultérieure possible du vecteur d'attaque SQL injecter et pour résoudre votre problème.

Questions connexes