У меня проблема с подготовленным оператором на 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;
(конечно, электронная почта содержит действительный адрес электронной почты со знаком @).
Это код возвращает случайную ошибку -
«Соединение отключено» {"ОШИБКА [01000] [Microsoft] [ODBC SQL Драйвер сервера] [TCP / IP Сокеты] ConnectionWrite (send ()). ОШИБКА [08S01] [Microsoft] [ODBC SQL Драйвер сервера] [Сокеты TCP / IP] Общие ошибка сети. Проверьте свою сеть документации. "}
Однако, если я запускаю свой код без подготовленного оператора, это означает:
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = '"+email+"'";
Все работает отлично.
Может быть, это связано с тем, что у меня есть знак @ в параметризованном значении? Я склонен думаю, что я не первый, кто пытается создать подготовленное утверждение с адресом электронной почты ...
Я понятия не имею, что не так! Другие подготовленные утверждения работают нормально ...
Не могли бы вы помочь? :) Спасибо, Nili