en utilisant SI la condition à l'intérieur d'une boucle while en C#

J'ai un problème avec mon code C#. J'ai créé un formulaire de connexion en C# 2010. Quand je suis de valider le nom d'utilisateur, j'ai utilisé un si condition à l'intérieur de la boucle while mais le truc c'est que même quand le nom d'utilisateur et mot de passe sont corrects, il exécute la d'autre-déclaration. Merci de m'aider à résoudre ce.

Voici mon code :

private void btnlogin_Click(object sender, EventArgs e) {
    string connection=
        @"Data Source=.\SQLEXPRESS;" 
        +" AttachDbFilename=|DataDirectory|ResturantDB.mdf;"
        +" Integrated Security=True; User Instance=True";

    SqlConnection cn=new SqlConnection(connection);

    try {
        cn.Open();
    }
    catch(Exception) {
        //print the exception's message?
        MessageBox.Show("Connection to Database failed; check Connection!");
    }

    SqlCommand cmd=new SqlCommand("SELECT * FROM [Login]", cn);
    cmd.Connection=cn;
    SqlDataReader reader=null;
    reader=cmd.ExecuteReader();

    while(reader.Read()) {
        if(
            txtuser.Text==(reader["Username"].ToString())
            &&
            txtpass.Text==(reader["Password"].ToString())
            ) {
            //MessageBox.Show( "logged in!" );
            Home newhome=new Home();
            newhome.Show();
            this.Hide();
        }
        else {
            MessageBox.Show("Incorrect credentials!");
        }
    }
}
  • avez-vous une seule ligne dans la table Login?
  • Premièrement: il semble que vous stockez les mots de passe en texte clair. Ne pas! Il ya beaucoup de questions à propos de hachage de mot de passe et le salage ici sur DONC. veuillez les lire attentivement. Deuxièmement: vous ne voulez pas de requête de toutes les lignes de Connexion de la Table. Juste celle qui correspond à la donnée de Username. Alors seulement vérifier qu'une fois. Ne pas utiliser une boucle ici.