c# MySQL reader 不读

c# MySQL reader not reading

我正在开发一个登录服务器,我遇到了这个问题: 我正在使用此 SQL 函数获取用户名匹配的密码:

SELECT password FROM users WHERE username='someusername';

在 c# 上,我正在使用此代码:

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 workbench 上它正常工作,但在 c# 上我总是得到一个空值,如果我尝试使用 cmd.ExecuteReader 和 Reader.Read() 而不是cmd.ExecuteScalar() 我得到一个例外,说我没有 运行 Reader.Read() 虽然我做了。

不要将参数占位符放在单引号之间。这样,您的参数占位符就变成了文字字符串,因此没有名为 '@username'

的用户名
string cmdString = ("SELECT password FROM users WHERE username=@username");

也就是说,请注意在数据库中以明文形式存储密码存在很大的安全风险。您应该只存储 hash of the password