Madaraa
Messages postés22Date d'inscriptionmardi 11 août 2009StatutMembreDernière intervention 7 février 2013
-
16 janv. 2011 à 18:00
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 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 !
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 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).
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 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!