我有在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