c #MySQL读者不读

时间:2015-11-12 18:47:55

标签: c# mysql

我正在开发一个登录服务器并且我遇到了这个问题: 我使用此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()虽然我做了。

1 个答案:

答案 0 :(得分:0)

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

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

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