我正在开发一个登录服务器并且我遇到了这个问题: 我使用此SQL函数获取用户名匹配的密码:
SELECT password FROM users WHERE username='someusername';
在c#i上使用此代码:
string cmdString = ("SELECT password FROM users WHERE username='@username'");
using (var con = new MySqlConnection(CNN_STRING))
{
con.Open();
var cmd = new MySqlCommand(cmdString, con);
cmd.Parameters.AddWithValue("@username", user);
return cmd.ExecuteScalar().ToString();
}
在MySQL工作台上它正常工作但在c#上我总是得到一个空值,如果我尝试使用cmd.ExecuteReader和Reader.Read()而不是cmd.ExecuteScalar()我得到一个异常说我没有&# 39;运行Reader.Read()虽然我做了。
答案 0 :(得分:0)
不要将参数占位符放在单引号之间。这样,您的参数占位符就成为文字字符串,因此没有名为'@username'
string cmdString = ("SELECT password FROM users WHERE username=@username");
请注意,请注意在数据库中以明文形式存储密码存在很大的安全风险。您应该只存储hash of the password