IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

Problème connexion utilisateur


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 84
    Points : 31
    Points
    31
    Par défaut Problème connexion utilisateur
    Bonjour,

    Je dois faire un formulaire de connexion pour mon application cependant, il de reconnait pas le login et mdp que j'entre. Je ne sais pas réelment corriger mon erreur.

    Voila mon code :

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Imports Oracle.DataAccess.Client
     
    Private Sub cmdValider_Click(sender As System.Object, e As System.EventArgs) Handles cmdValider.Click
            '--Connexion à la Base de données--
            Dim strConnex As String
            Dim Rqt As String
            Try
                strConnex = "Data Source=DEV;User Id=CEDRICV;Password=CEDRICV;"
                Me.objConnexion = New OracleConnection(strConnex)
                Me.objConnexion.Open()
                Rqt = "Select PSEUDO_UTILISATEUR, MDP_UTILISATEUR From UTILISATEUR where PSEUDO_UTILISATEUR = '" & txtIdentifiant.Text & "' and  MDP_UTILISATEUR = '" & txtMdp.Text & "'"
                If Rqt = "" Then
                    MessageBox.Show("ERREUR, Login ou Mot de Passe invalide!")
                Else
                    ChoixFormulaire.Show()
                    Me.Hide()
                End If
            Catch ex As Exception
                MessageBox.Show("ERREUR sur objet de connexion : " & ex.Message)
            End Try
        End Sub

    Aidez moi svp!

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ben là ton code est incomplet, car tu n'exécutes jamais ta requête donc ça ne risque pas de fonctionner

    Voici ce qu'il te manque (je te laisse adapter à ton cas) :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    ' Requêete paramétrée    
    Rqt = "SELECT pseudo_utilisateur, mdp_utilisateur FROM fonctionnaire WHERE pseudo_utilisateur = @Pseudo and  mdp_utilisateur = @Mdp"    
     
    ' On crée une commande Oracle    
    Using cmd = New OracleCommand()    
        cmd.Connection = Me.objConnexion    
        cmd.CommandText = Rqt    
        cmd.CommandType = CommandType.Text    
     
        ' On définit les valeurs des paramètres de la requête    
        cmd.Parameters.AddWithValue("@Pseudo", txtIdentifiant.Text)    
        cmd.Parameters.AddWithValue("@Mdp", txtMdr.Text)    
     
        ' On exécute la requête    
        Using dr As OracleDataReader = cmd.ExecuteReader()    
            ' On lit le résultat    
            dr.Read()    
     
            ' Récupère les infos et les stocke dans des variables    
            Dim pseudo = dr.Item("pseudo_utilisateur")    
            Dim mdp = dr.Item("mdp_utilisateur")    
        End Using    
    End Using
    Attention le code lié au DataReader n'est à utiliser que pour un seul enregistrement. La syntaxe sera différente si tu veux en récupérer plusieurs.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Juste une question bête, mais à quoi corresponde tes @login et @mdp? je ne comprend pas par quoi les remplacer dans mon cas, sinon merci pour ta réponse je vais tester une fois que j'aurais tout compris

    Et AddWithValues n'est pas un membre de Oracle, connais-tu sont équivalent Oracle?

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Crowww Voir le message
    Juste une question bête, mais à quoi corresponde tes @login et @mdp? je ne comprend pas par quoi les remplacer dans mon cas, sinon merci pour ta réponse je vais tester une fois que j'aurais tout compris
    Ce sont des paramètres. Voici un bon article qui explique pourquoi il est recommandé d'utiliser des requêtes paramétrées. Ce n'est pas une obligation, mais c'est une best practice et ça te simplifie la tâche.

    Lorsque tu utilises la concaténation comme tu l'avais fait, tu t'exposes au risque d'injection SQL, puisque tu ne fais aucun contrôle sur ce qui a été saisi par l'utilisateur. Tu dois aussi te préoccuper du format (par exemple pour les strings, tu dois encadrer ça avec des apostrophes (simple quote)). Avec les paramètres, tout ça est géré automatiquement.

    Citation Envoyé par Crowww
    Et AddWithValues n'est pas un membre de Oracle, connais-tu sont équivalent Oracle?
    Ahh oui c'est vrai que tu es sous Oracle Il faut donc changer un peu la syntaxe. Voici le code à utiliser au lieu de l'autre (j'ai modifié la syntaxe des paramètres, qui commencent avec ":" pour Oracle, et l'ajout des paramètres) :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    ' Requêete paramétrée    
    Rqt = "SELECT pseudo_utilisateur, mdp_utilisateur FROM fonctionnaire WHERE pseudo_utilisateur = :Pseudo and  mdp_utilisateur = :Mdp"    
     
    ' On crée une commande Oracle    
    Using cmd = New OracleCommand()    
        cmd.Connection = Me.objConnexion    
        cmd.CommandText = Rqt    
        cmd.CommandType = CommandType.Text    
     
        ' On définit les valeurs des paramètres de la requête
        cmd.Parameters.Add(":Pseudo", OracleDbType.Varchar2).Value = txtIdentifiant.Text
        cmd.Parameters.Add(":Mdp", OracleDbType.Varchar2).Value = txtMdp.Text
     
        ' On exécute la requête    
        Using dr As OracleDataReader = cmd.ExecuteReader()    
            ' On lit le résultat    
            dr.Read()    
     
            ' Récupère les infos et les stocke dans des variables    
            Dim pseudo = dr.Item("pseudo_utilisateur")    
            Dim mdp = dr.Item("mdp_utilisateur")    
        End Using    
    End Using
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Erreur sur objet de connexion : Impossible de trouver la colonne spécifiée dans l'ensemble des résultats (ResultSet)

    J'ai vraiment du mal avec ce formulaire de connexion...

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Avant de récupérer les valeurs avec GetItem, il faut vérifier que tu aies bien des données renvoyées. Tu peux utiliser la propriété HasRows du data reader pour le savoir.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Oui mais si il me renvoie déjà Erreur sur objet de connexion, cela signifie qu'il saute mon try et passe au catch, donc la connexion a la BDD n'est même pas effectuer! Donc il ne risque pas de me retourner de données.

    Je me trompe?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    En gros, je viens de remarquer qu'un fois les donées stocké dans des variables, je ne fais plus rien avec, est ce que je dois rajouter un ChoixFormulaire.Show() et Me.Hide() afin de passer à la suite?

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Private Sub cmdValider_Click(sender As System.Object, e As System.EventArgs) Handles cmdValider.Click
            Dim strConnex As String
            Dim Rqt As String
            Try
                ' --Connexion à la BDD--
                strConnex = "Data Source=DEV;User Id=CEDRICV;Password=CEDRICV;"
                Me.objConnexion = New OracleConnection(strConnex)
                Me.objConnexion.Open()
                ' Requête paramétrée    
                Rqt = "SELECT PSEUDO_UTILISATEUR, MDP_UTILISATEUR FROM UTILISATEUR WHERE PSEUDO_UTILISATEUR = :Pseudo and  MDP_UTILISATEUR = :Mdp"
     
                ' On crée une commande Oracle    
                Using cmd = New OracleCommand()
                    cmd.Connection = Me.objConnexion
                    cmd.CommandText = Rqt
                    cmd.CommandType = CommandType.Text
     
                    ' On définit les valeurs des paramètres de la requête
                    cmd.Parameters.Add(":Pseudo", OracleDbType.Varchar2).Value = txtIdentifiant.Text
                    cmd.Parameters.Add(":Mdp", OracleDbType.Varchar2).Value = txtMdp.Text
     
                    ' On exécute la requête    
                    Using dr As OracleDataReader = cmd.ExecuteReader()
                        ' On lit le résultat    
                        dr.Read()
     
                        ' Récupère les infos et les stocke dans des variables    
                        Dim pseudo = dr.Item("PSEUDO_UTILISATEURr")
                        Dim mdp = dr.Item("MDP_UTILISATEUR")
                        If txtIdentifiant.Text = pseudo And txtMdp.Text = mdp Then
                            ChoixFormulaire.Show()
                            Me.Hide()
                        Else
                            MessageBox.Show("ERREUR, Login ou Mot de Passe invalide!")
                        End If
                    End Using
                End Using
     
            Catch ex As Exception
                ' --Message d'erreur en cas de problême de connexion à la BDD--
                MessageBox.Show("ERREUR sur objet de connexion : " & ex.Message)
            End Try
        End Sub

  10. #10
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Déjà il faudrait que tu postes ton code dans son état actuel et que tu nous indiques quelle est la ligne qui génère l'erreur. Ca permettra d'y voir un peu plus clair et de voir si oui ou non il se connecte.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. [Débutant] problème connexion d'un utilisateur via une requete sql
    Par rikiki123 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 10/11/2011, 10h59
  2. problème connexion à sqlplus pour un utilisateur seulement
    Par Erielle dans le forum Connexions aux bases de données
    Réponses: 3
    Dernier message: 29/08/2011, 11h33
  3. Problème connexion - instance utilisateur
    Par LE VIEUX dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 26/09/2008, 09h46
  4. Problème de connexion.. utilisateur associé
    Par poussinphp dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/09/2008, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo