我有一个简单的查询,其中有一个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
传递到页面时,此查询实际上未返回任何一行,但我没有得到任何结果。
答案 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?)