Tengo un problema con una declaración preparada en C#:C# Las declaraciones preparadas - símbolo @ (en/signo strudel) busca
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("@USER_ID", OdbcType.VarChar, 250).Value = email;
(por supuesto correo electrónico contiene una dirección válida de correo electrónico, con el símbolo @).
Este código devuelve un error aleatorio -
"La conexión ha sido desactivado" { "ERROR [01000] [Microsoft] [ODBC SQL Server Driver] [TCP/IP sockets] ConnectionWrite (send()). eRROR [08S01] [Microsoft] [ODBC SQL conductor Server] [TCP/IP sockets] general error en la red. Consulte la documentación de la red ".}
Howeve r si ejecuto mi código sin una declaración preparada, lo que significa:
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = '"+email+"'";
Todo funciona perfectamente.
¿Tal vez esté relacionado con el hecho de que tengo un signo @ en el valor parametrizado? Tiendo a pensar que no soy el primero tratando de crear una declaración preparada con una dirección de correo electrónico ...
¡No tengo idea de qué pasa! Otras declaraciones preparadas funcionan normalmente ...
¿Pueden ayudarnos? :) Gracias, Nili
Hmm. Cuando hago declaraciones preparadas, utilizo parámetros con nombre. Algo en la medida de 'SELECT * FROM table WHERE id = @ id' y luego invoque' .Parameters.Add ("@ id", email); '- Intente eso, vea si funciona – Zack