Comparer deux chaines en c#

mimi -  
Nico# Messages postés 338 Statut Membre -
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

Nico# Messages postés 338 Statut Membre 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
mimi
 
aucune réponse !!!
-1