从GET变量传递参数时,查询返回空集

时间:2019-05-29 07:38:41

标签: c# asp.net sql-server webforms

我有一个简单的查询,其中有一个where子句,从代码运行时没有结果。

如果该查询是从SQL Server Management Studio运行的,则该查询工作正常,但是当我传递一些从GET参数获取的变量时,该查询将不会显示任何结果。Request.QueryString["q"]不是NULLCommand.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 :(得分:0)

HTML script var urll = "http://127.0.0.1:8001/selectedfiles" var http = new XMLHttpRequest(); var params = "hello"; $.ajax( { url : urll, data : JSON.stringify({"selectedfiles": "hello"}), type : 'POST', dataType : 'json', success : function(wsQuery) {alert("ok"); } }); $.ajax(urll, { type: "POST", dataType: 'json', data: JSON.stringify({"selectedfiles": "hello"}), success: function(result) { console.log(result);} }); http.open('POST', urll, true); http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); http.onreadystatechange = function() { if(http.readyState == 4 && http.status == 200) { alert(http.responseText); } } http.send(params); $.post(urll, data = JSON.stringify({ selectedfiles: 'hello' }), function (result) { alert('OK'); }, 'json'); </script> 将搜索一行,其中[display_name] LIKE N'%@query%'包含文本display_name不是变量'@query'的值。 C#不会注入参数的值。 您需要执行以下操作:

@query

注意,我还删除了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; Can we stop using AddWithValue Already?