Requete de Recherche HS ?

Résolu
Pitoux78 Messages postés 16 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 29 mars 2007 - 6 oct. 2006 à 13:44
lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 - 6 oct. 2006 à 15:07
Bonjour,

Je souhaite faire une recherche sur une base access pour savoir si un utilisateur si trouve.
Je me retrouve donc avec un FORM qui demande le Nom + Prenom
voici mon code

nom = TB1.Text

prenom = TB2.Text
Vsql " Select count(*) from tblClients where Prenom [prenom] and NomClient = [nom]"ouvrircnx()

Dim cmd
As
New OleDbCommand
cmd.Connection = _mconnexion
cmd.CommandText = Vsql
cmd.CommandType = CommandType.Text

cmd.Parameters.Add(
"prenom", OleDbType.Char)
cmd.Parameters(
"prenom").Value = prenom

cmd.Parameters.Add(
"nom", OleDbType.Char)
cmd.Parameters(
"nom").Value = nom

If cmd.ExecuteScalar = 1
ThenMessageBox.Show(

"Utilisateur identifié")

ElseMessageBox.Show(

"Utilisateur non reconnu")

Quoi que je rentre en nom et prenom il ne trouve rien.
Ma requete est mauvaise ?

Par ava,ce merci
Laurent

10 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
6 oct. 2006 à 14:28
essaye avec ça : Vsql = "Select count(*) from tblClients where Prenom = ' " & prenom & "'and NomClient = '" & nom & "'"

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
6 oct. 2006 à 13:59
Bonjour,

je connais pas trop VB NET mais dans une requete SQL "normale" , il y a besoin de simple cote dans votre requete SQL

genre : SELECT [...] Where prenom = 'toto' AND nom = 'Blop'

Il ne s'agit donc que d un avis purement SQLien :)
0
Pitoux78 Messages postés 16 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 29 mars 2007
6 oct. 2006 à 14:16
Re,

J'ai donc modifier ma requete par
Vsql " Select count(*) from tblClients where Prenom 'prenom' and NomClient = 'nom'"

Mais toujours le meme probléme
ATTENTION Prenom et Nom sont des variables dans ma chaine SQL
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 oct. 2006 à 14:27
éviter les concaténations, lilo44....
Pitoux78 fais une requête parametrée, ce qui est bien plus sécurisé (face nottament a l'injection SQL)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pitoux78 Messages postés 16 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 29 mars 2007
6 oct. 2006 à 14:31
Super ! Bravo ! Perfet .
HUm je m'arrete la :p

La requete fonctionneVsql " Select count(*) from tblClients where Prenom '" & prenom &
"' and NomClient = '" & nom &
"'"

Merfi
0
lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
6 oct. 2006 à 14:34
c'est ce que je disais ....

Je n'ai pas été assez précis :-) désolé
0
Pitoux78 Messages postés 16 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 29 mars 2007
6 oct. 2006 à 14:36
Une requéte parametre ?
C'est a dire ? 
Désolé je débute
0
lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
6 oct. 2006 à 14:39
Elle semble très bien la requete comme ca hum ..

Comme ce sont 2 variables, je ne vois pas bien le rapport avec l'utilisation de parametres ^^ :)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 oct. 2006 à 15:04
bien que cette requete fonctionne, elle n'est pas top coté sécurité...

imagine une requete batit pareil, pour une suppression :

"DELETE FROM [Clients] WHERE [Nom] = '" & Nom & "' "

si ton utilisateur injecte du SQL comme suit :

en s'arrangeant pour que Nom soit égal par exemple à :

' OR ''='

et tous tes enregistrements disparaissent

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
6 oct. 2006 à 15:07
mouai .. je vois ce que tu veux dire.

Pas convaincu mais c'est pas faux. Je suis dans une logique qui consiste a se dire que des boulettes yen a forcément. C'est comme ca qu on apprend :D ^^
0
Rejoignez-nous