mam problem z przygotowaną instrukcję w języku C#:C# sporządziły sprawozdania - znak @ (w/strudel znaku) odpytuje
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("@USER_ID", OdbcType.VarChar, 250).Value = email;
(oczywiście e-mail zawiera adres e-mail, ze znakiem @).
Ten kod zwraca błąd losowy -
"Połączenie zostało wyłączone" { "BŁĄD [01000] [Microsoft] [ODBC SQL Server Driver] [TCP/IP Gniazdka] ConnectionWrite (send()). eRROR [08S01] [Microsoft] [ODBC SQL Server Driver ] [TCP/IP Sockets] Ogólne błąd sieci. Sprawdź w dokumentacji sieci . "}
Howeve r jeśli uruchomię swój kod bez przygotowanego wyciągu, co oznacza:
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = '"+email+"'";
Wszystko działa idealnie.
Być może jest to związane z tym, że mam znak @ w parametryzowanej wartości? Mam wrażenie, że nie jestem pierwszym, który próbuje stworzyć przygotowane oświadczenie z adresem e-mail ...
Nie mam pojęcia, co jest nie tak! Inne przygotowane instrukcje działają normalnie ...
Czy możesz pomóc? :) Dzięki, Nili
Hmm. Kiedy wykonuję przygotowane instrukcje, używam nazwanych parametrów. Coś w zakresie 'WYBIERZ * od tabeli WHERE id = @ id', a następnie wywołaj' .Parameters.Add ("@ id", e-mail); '- Wypróbuj to, zobacz czy działa – Zack