Запрос возвращает пустой набор, когда параметры передаются из переменных GET - PullRequest
0 голосов
/ 29 мая 2019

У меня есть простой запрос с предложением where, который не дает результатов при запуске из кода.

Этот запрос работает нормально, если он запускается из среды SQL Server Management Studio, но когда я передаю некоторые переменные, которые взяты из параметров GET, этот запрос не даст результатов. Request.QueryString["q"] не NULL. Command.ExecuteReader(); выполняется хорошо.

Connection = new SqlConnection(ConnectionString);
        Connection.Open();
        Command = new SqlCommand("", Connection);
        if (Request.QueryString["q"] != null)
        {
            Query = Request.QueryString["q"].ToString();
            Command.CommandText = "SELECT * FROM [device] WHERE [display_name] LIKE N'%@query%' OR [address] LIKE N'%@query%' ";
            Command.Parameters.AddWithValue("@query", Query);
            Reader = Command.ExecuteReader();

            while (Reader.Read())//Here Reader.HasRows=False
            {
                //Do Stuff
            }

В таблице есть одна строка, у которой [display_name] равно KHR, а [address] равно تست. Передав ?q=kh на страницу, я не получаю результата от этого запроса, где он должен фактически вернуть одну строку.

1 Ответ

0 голосов
/ 29 мая 2019

[display_name] LIKE N'%@query%' будет искать строку, где display_name содержит текст '@query' , а не значение переменной @query.C # не вводит значение параметра.Вам нужно сделать что-то вроде этого:

Command.CommandText = "SELECT * FROM [device] WHERE [display_name] LIKE N'%' + @query + N'%' OR [address] LIKE N'%' + @query + N'%';";
Command.Parameters.Add("@query", SqlDbType.NVarChar, 50);
Command.Parameters["@query"].Value = Query;

Примечание. Я также удалил AddWithValue ( Можем ли мы прекратить использовать AddWithValue уже? )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...