我想知道为什么这个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是文本框。我想搜索用户名列包含我在文本框中输入的字符的行。
答案 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}}