我有在C#中准备好的声明一个问题:C#编写的报告 - @符号(AT /点心符号)查询
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("@USER_ID", OdbcType.VarChar, 250).Value = email;
(当然,邮件中包含一个有效的电子邮件地址,用@符号)。
此代码返回一个随机错误 -
“的连接已经被禁用” {“ERROR [01000] [微软] [ODBC SQL Server驱动程序] [TCP/IP 套接字] ConnectionWrite(发送())。 错误[08S01] [微软] [ODBC SQL Server驱动程序] [TCP/IP套接字]一般 网络错误。请检查您的网络 文档。“}
Howeve r如果我没有准备好的声明运行我的代码,意思是:
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = '"+email+"'";
一切正常。
也许这与我在参数化值中有@符号这一事实有关?我倾向于认为我不是第一个试图用电子邮件地址创建预备声明的人...
我不知道什么是错的!其他准备好的陈述正常工作...
你能帮忙吗? :) 谢谢, Nili
嗯。当我准备好陈述时,我使用命名参数。在SELECT * FROM table WHERE id = @ id`的范围内,然后调用`.Parameters.Add(“@ id”,email);` - 试试看看它是否有效 – Zack 2011-02-10 08:38:17