C# Préparé États - signe @ (at / strudel signe) requêtes

J'Ai un problème avec une requête préparée en C#:

OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("@USER_ID", OdbcType.VarChar, 250).Value = email;

(bien sûr e-mail contient une adresse de courriel valide, avec le signe@).

Ce code renvoie une erreur aléatoire -

"La connexion a été désactivé"
{"ERREUR [01000] [Microsoft][ODBC SQL
Server Driver][TCP/IP
Sockets]ConnectionWrite (send()).
ERREUR [08S01] [Microsoft][ODBC SQL
Server Driver][Sockets TCP/IP]Général
erreur de réseau. Vérifiez votre réseau
de la documentation".}

Cependant, si je lance mon code sans une déclaration préparée, sens:

cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = '"+email+"'";

Tout fonctionne parfaitement.

C'est peut-être lié au fait que j'ai un signe @ dans les paramétrés de la valeur? J'ai tendance à penser que je ne suis pas le premier à essayer de créer une déclaration préparée avec une adresse e-mail...

Je n'ai aucune idée de ce qui est mal! D'autres déclarations préparées à l'avance de travailler normalement...

Pouvez-vous s'il vous plaît aider? 🙂
Merci,
Nili

Hmm. Quand je fais des déclarations préparées à l'avance, j'ai utiliser des paramètres nommés. Quelque chose à la mesure de SELECT * FROM table WHERE id = @id et ensuite appeler .Parameters.Add("@id", email); -- Essayer, voir si ça fonctionne

OriginalL'auteur Nili | 2011-02-10