SqlDataReader[“Attribute"].ToString不起作用
本文关键字:ToString 不起作用 quot Attribute SqlDataReader | 更新日期: 2023-09-27 18:12:55
实际上,我有这部分代码来比较用户输入的密码是否与SQL Server数据库中的密码相同:
if (drUtilisateur["MotDePasse"].ToString() == strMotDePasse)
我不明白为什么drUtilisateur["MotDePasse"].ToString()
不工作。
你有什么解决办法吗?
第一次实现:
这是我的完整代码,上面的部分代码在:
private bool Authentifier(string strNomUtilisateur, string strMotDePasse)
{
bool bOk = false;
// Cryptage du mot de passe
strMotDePasse = FormsAuthentication.HashPasswordForStoringInConfigFile(strMotDePasse, "MD5");
// Création d'une connexion SGBD
SqlConnection oConnexion = new SqlConnection(Convert.ToString(ConfigurationManager.ConnectionStrings["SaisieHeuresConnectionString"]));
// Définition de la requête à exécuter
SqlCommand oCommand = new SqlCommand("SELECT * FROM Utilisateurs WHERE NomUtilisateur='" + strNomUtilisateur + "'", oConnexion);
try
{
// Ouverture de la connexion et exécution de la requête
oConnexion.Open();
SqlDataReader drUtilisateur = oCommand.ExecuteReader();
// Parcours de la liste des utilisateurs
while (drUtilisateur.Read())
{
if (drUtilisateur["MotDePasse"].ToString().Equals(strMotDePasse))
{
bOk = true;
break;
}
}
}
catch
{
bOk = false;
}
oConnexion.Close();
return bOk;
}
我将我的密码散列为MD5(因为它是要求我的散列方法)。
我找到答案了。
实际上,我的程序运行正常。
异常是当用户输入密码时,程序将其哈希为MD5;在我的数据库中,字母是大写的,而我是小写的。
所以,当你在一个代码中比较MD5中的两个密码时,要注意大小写
Try
if (drUtilisateur["MotDePasse"] != DBNull.Value) {
drUtilisateur["MotDePasse"].ToString().equals(strMotDePasse)
} else {
//null
}
注意:请不要以明文形式存储密码