Login avec une base de donnée access

Résolu
Madaraa Messages postés 22 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 7 février 2013 - 16 janv. 2011 à 18:00
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 - 16 janv. 2011 à 20:32
Bonjour,

Je fais un petit formulaire avec un champ utilisateur, un champ mot de passe et un bouton login, le problème que j'ai c'est que ça passe tout droit, je ne sais pas vraiment pourquoi, voici le code de mon bouton login :

//Faire le contrôle du login et du mot de passe par base de donnée
            string Utilisateur = tbxUtilisateur.Text;
            string Password = tbxPassword.Text;
            OleDbConnection maConnex = new  OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
            @"C:\Password.accdb;Persist Security Info=False;");
            maConnex.Open();
            string CommandeSql "SELECT Utilisateur, Password FROM test WHERE Password'" + Password + "' and Utilisateur ='" + Utilisateur + "'";
            OleDbCommand InsertionPersonne = new OleDbCommand(CommandeSql, maConnex);
            InsertionPersonne.ExecuteNonQuery();

            if (InsertionPersonne != null)
            {
                MessageBox.Show("OK");
            }
            else
            {
                MessageBox.Show("Erreur");
            }
            maConnex.Close();


peut importe les valeurs que j'entre dans mes deux textbox il m'affiche OK. j'ai besoin d'aide au secours !

4 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
16 janv. 2011 à 18:46
Bonjour

ben c'est un peu normal en fait.
tu testes si InsertionPersonne est different de null
mais InsertionPersonne c'est ta commande, que tu as initiialisée, donc elle ne paut pas être null

En fait il faut que tu testes le retour de l'execution.
Changes la requete en "SELECT Utilisateur FROM test WHERE Password ='" + Password + "' and Utilisateur ='" + Utilisateur + "'";
et l'execution en object retValue = InsertionPersonne.ExecuteScalar();
puis test la valeur de RetValue.

le ExecuteScalar permet de retrouver le resultat d'une requete s'il est unique.
si la requete retourne plusieurs champs, et ou plusisieurs lignes, utilise
SqlDataReader reader = ExecuteReader();
puis test si le reader est vide (Reader.HasRow de mémoire).


Bob.
C# is amazing, enjoy it!
3
Madaraa Messages postés 22 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 7 février 2013
16 janv. 2011 à 18:56
Salut bob,

ce code retourne quel type de données ? : InsertionPersonne.ExecuteScalar();
0
Madaraa Messages postés 22 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 7 février 2013
16 janv. 2011 à 19:03
Salut bob,

Merci pour ton message ça marche très bien bonne soirée et encore merci.

ps: la fonction ExecuteScalar retourne l'information par rapport au type de la colonne de la base de donnée ?
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
16 janv. 2011 à 20:32
Re...

Oui, ExecuteScalar retourn un objet, dont le type reel dépend de la donnée retournée par la requette.
Si tu connais le type à l'avance, tu peux donc le "caster" pour l'exploiter.

Bonne soitrée à toi aussi.
Bob.
C# is amazing, enjoy it!
0
Rejoignez-nous