搜索数据库中的行,其列包含特定字符串[Search-Query]

时间:2017-01-22 19:40:21

标签: c# mysql

我想知道为什么这个SQL查询没有返回任何内容:

mySqlCommand.CommandText = "SELECT * FROM `users` WHERE Username LIKE %@Username% ORDER BY Id DESC";
mySqlCommand.Parameters.AddWithValue("@Username", this.search.Text);

这不是读者问题或类似的事情,如果我删除" WHERE用户名LIKE%@用户名%",它可以正常工作。 我在文本框的KeyPress-Event中调用了整个MySQL-Query。 this.search是文本框。我想搜索用户名列包含我在文本框中输入的字符的行。

3 个答案:

答案 0 :(得分:0)

尝试使用

//For LIKE query
SqlParameter parameter = new SqlParameter("@query", SqlDbType.NVarChar);
parameter.Value = string.Format("%{0}%", this.search.Text);
IList<Users> results = ctx.Database.SqlQuery<Users>("SELECT * FROM Users WHERE Username LIKE @query", parameter).ToList();

答案 1 :(得分:0)

我用这个解决了它:

mySqlCommand.CommandText = "SELECT * FROM `users` WHERE Username LIKE @Username ORDER BY Id DESC";
mySqlCommand.Parameters.AddWithValue("@Username", "%" + this.search.Text + "%");

答案 2 :(得分:0)

我强烈建议使用存储过程,有助于防止SQL注入攻击,并且您希望禁止您的应用程序使用插入,更新和删除脚本,并且只允许它对存储过程使用执行语句。

但你想从

改变这一行

mySqlCommand.CommandText = "SELECT * FROM {用户{1}}

WHERE Username LIKE %@Username% ORDER BY Id DESC"; {用户{1}}