Comparer deux chaines en c#

mimi -  
Nico# Messages postés 328 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai réalisé un code d'authentification permettant à un utilisateur de se connecter à l'application .

pour cela j'accède à la base de données et je vérifie si les informations saisies par l'utilisateur existent dans la base de données ou non.

voici le code que j'ai développer :

 public bool authentifier(string log, string pass) 
        {
            string l="", p="";
            bool trouve=false;
            int n=0;
            
            foreach (DataRow row in datast.Tables["utilisateur"].Rows)
            {
                
                l = (string) datast.Tables["utilisateur"].Rows[n].ItemArray[0];
                p = (string) datast.Tables["utilisateur"].Rows[n].ItemArray[1];
                
                if (l.Equals(log) == true) 
                {
                    if (p.Equals(pass) ==true) 
                    {
                        trouve = true; ;
                    }
                }
                n++;
            }
            return trouve;
        
        }


J'ai controlé la valeur du trouve dans le traitement suivant :
            bool valid;
            valid = user.authentifier(this.textBox_login.Text, this.textBox_pass.Text);
            if (valid == true) { this.Close(); }
            else MessageBox.Show("Le nom d'utilisateur ou le mot de passe est invalide !");

Mais dans l'exécution , toujours le message " nom....invalide" est affiché.
quand j'ai fait quelques vérifications j'ai trouvé que le l et le p contiennent toujours des données et que le programme n'entre pas à l'intruction if même si la condition est réalisée .

quelqu'un peut m'aider à résoudre ce problème??

merci

SQL Server 2000
visual c# expess 2008

2 réponses

  1. Nico# Messages postés 328 Date d'inscription   Statut Membre Dernière intervention   102
     
    slt dans ta conditions une fois trouve la concordances tudois quitter ton test

     public bool authentifier(string log, string pass) 
            {
                string l=null, p=null; // prefere des null ou des empty au lieu des ""
                bool trouve=false;
                int n=0;
                
                foreach (DataRow row in datast.Tables["utilisateur"].Rows)
                {
                    
                    l = (string) datast.Tables["utilisateur"].Rows[n].ItemArray[0];
                    p = (string) datast.Tables["utilisateur"].Rows[n].ItemArray[1];
                    
                    if (l.Equals(log) == true) 
                    {
                        if (p.Equals(pass) ==true) 
                        {
                            trouve = true; 
                            return trouve ;
                        }
                    }
                    n++;
                }
                return trouve;
            
            }


    de plus tu peut combine des deux if avec la condition et se qui evite un second if
    1