Login avec une base de donnée access [Résolu]

Messages postés
23
Date d'inscription
mardi 11 août 2009
Dernière intervention
7 février 2013
- - Dernière réponse : cs_Robert33
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
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 !
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Dernière intervention
14 janvier 2017
3
Merci
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!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_Robert33
Messages postés
23
Date d'inscription
mardi 11 août 2009
Dernière intervention
7 février 2013
0
Merci
Salut bob,

ce code retourne quel type de données ? : InsertionPersonne.ExecuteScalar();
Commenter la réponse de Madaraa
Messages postés
23
Date d'inscription
mardi 11 août 2009
Dernière intervention
7 février 2013
0
Merci
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 ?
Commenter la réponse de Madaraa
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Dernière intervention
14 janvier 2017
0
Merci
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!
Commenter la réponse de cs_Robert33

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.