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(因为它是要求我的散列方法)。

SqlDataReader[“Attribute"].ToString不起作用

我找到答案了。

实际上,我的程序运行正常。

异常是当用户输入密码时,程序将其哈希为MD5;在我的数据库中,字母是大写的,而我是小写的。

所以,当你在一个代码中比较MD5中的两个密码时,要注意大小写

Try

if (drUtilisateur["MotDePasse"] != DBNull.Value) {
    drUtilisateur["MotDePasse"].ToString().equals(strMotDePasse)
} else {
    //null
}

注意:请不要以明文形式存储密码