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

Madaraa 23 Messages postés mardi 11 août 2009Date d'inscription 7 février 2013 Dernière intervention - 16 janv. 2011 à 18:00 - Dernière réponse : cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention
- 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
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 16 janv. 2011 à 18:46
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!

Merci cs_Robert33 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_Robert33
Madaraa 23 Messages postés mardi 11 août 2009Date d'inscription 7 février 2013 Dernière intervention - 16 janv. 2011 à 18:56
0
Merci
Salut bob,

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