У меня есть запрос, который получает некоторую информацию из базы данных на сервере MSSQL, как это:Использование% объявлений в строке для оператора «как» для фильтрации результатов запроса
String sql = "select Name from Projects where Name NOT IN (select Project_Name from vDays) and Name like @filterText order by Name";
У меня есть текстовое поле, позволяющее пользователь вводит текст для фильтрации проектов, возвращаемых по имени, при использовании символа% до, после или вокруг текста. Это отлично работает, если пользователь не вводит ничего, начиная с %ad
. Когда это происходит, отладчик (используя VS2010) показывает текст как �
. Это, конечно, передается в запрос и не возвращает правильную информацию.
Я сделал кучу поисковых систем и не могу найти причин, почему %ad
превращается в �
. До сих пор каждый другой запрос работал нормально.
Update:
Хорошо, так что изменение происходит, когда я иду на другую страницу с помощью Response.Redirect
и отправок значения текстового поля с ним.
filterText = FilterTextBox.Text;
Response.Redirect("UnusedProjects_Results.aspx?filterText=" + filterText);
filterText
показывает %ad
должным образом.
Затем на следующей странице:
string filterText = "";
filterText = Request.QueryString["filterText"];
filterText
показывает �
Как @ DavidT.Macknet сказал в комментарии, это, кажется, из-за кодирования URL. Есть ли способ сохранить эти символы% без кодирования? Если нет, я всегда могу изменить его, чтобы пользователь ввел *
вместо этого, а затем замените все *
на %
до того, как возникнут запросы.
Это URL-кодированное значение, может быть? http://www.w3schools.com/tags/ref_urlencode.asp –
Стреляй, да, похоже, что это все. Собираюсь обновить свой вопрос. Благодаря! – pfinferno