C'est toujours pas très clair mais bon...
Il y a plusieurs trucs qui ne vont pas dans ton code :
- D'abord, la requête : il ne faut pas que tu sélectionnes toutes les lignes de la table, mais seulement celle qui correspond au login recherché. Donc il faut que tu rajoutes un WHERE dans la requête :
Code:
1 2 3 4
| ...
commandselect.CommandText = "select LoginU, PasswordU from utilisateur where LoginU = @login";
commandselect.Parameters.Add("@login", MySqlDbType.VarString).Value = login;
... |
- Quand tu as trouvé la ligne qui correspond, il faut sortir du while ; et encore, en principe il ne devrait y avoir qu'une seule ligne avec un login donné, donc il n'y a pas besoin de faire une boucle, un if est suffisant :
Code:
1 2 3 4 5 6 7 8
| if (Readerselect.Read())
{
...
}
else
{
MessageBox.Show("ce login n'existe pas");
} |
- Seules les colonnes LoginU et PasswordU t'intéressent, donc ça ne sert à rien de faire une boucle for qui parcourt toutes les colonnes (d'ailleurs dans ton code tu n'utilises jamais la variable i de la boucle, c'est bien la preuve que tu n'en as pas besoin...)
- Pour finir, la façon de comparer les chaines n'est pas correcte : Readerselect["LoginU"] renvoie un object, donc si tu compares avec une chaine avec l'opérateur ==, ça va faire une comparaison par référence, et ça va renvoyer false même si les valeurs sont en fait égales. Il faut faire un cast de Readerselect["LoginU"] en string avant de comparer :
Code:
if ((string)Readerselect["LoginU"] == login && (string)Readerselect["PasswordU"] == password)
Pour finir, une petite remarque (qui n'est pas la cause de ton problème) : normalement on ne stocke pas un mot de passe en clair dans la base de données. On stocke son "hash", une valeur calculée avec un algorithme comme MD5 ou SHA1. Pour vérifier si le mot de passe donné par l'utilisateur est correct, on calcule aussi son hash, et on vérifie que ça correspond bien à celui qui est dans la base de données. Tu trouveras des exemples un peu partout sur la façon de calculer le hash.