尝试从MySql数据库执行select语句。当我直接插入变量时,以下内容有效:
MySqlCommand playerSearch = conn.CreateCommand();
playerSearch.CommandText = @"select username from players where username like '%" + username + "%'";
playerSearch.Prepare();
// Execute the command, get the restuls, etc.
但是,如果我尝试使用参数添加的首选方式,例如:
MySqlCommand playerSearch = conn.CreateCommand();
playerSearch.CommandText = @"select username from players where username like @username";
playerSearch.Prepare();
playerSearch.Parameters.AddWtihValue("@username", "'%" + username + "%'");
// Execute the command, get the restuls, etc.
我从查询中得不到任何结果。到目前为止,我还没弄清楚为什么这不起作用。有什么建议吗?
答案 0 :(得分:6)
删除内部引号。
playerSearch.Parameters.AddWtihValue("@username", "%" + username + "%");
答案 1 :(得分:1)
将通配符构建到查询中,而不是数据:
MySqlCommand playerSearch = conn.CreateCommand();
playerSearch.CommandText = @"select username from players where username like '%' + @username + '%'";
playerSearch.Prepare();
playerSearch.Parameters.AddWtihValue("@username", username);
// Execute the command, get the restuls, etc.
更好的是,完全避免编写这种LIKE查询。查询中的初始通配符会阻止数据库使用任何索引。使用真正的full-text search机制。 LIKE是一个糟糕的替代品。
答案 2 :(得分:-1)
好吧,只需运行Mysql并直接输入查询,而mysql服务器会为您提供语法错误的信息,如果有的话。 最好的方法是,让程序以纯文本形式显示您的查询(我的意思是在运行时),然后将其放入mysql命令行。