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
我正在开发一个登录服务器,我遇到了这个问题: 我正在使用此 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