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

VB.NET Discussion :

Utilisation difficile de .executeNonQuery


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Août 2011
    Messages : 103
    Par défaut Utilisation difficile de .executeNonQuery
    Bonjour
    J'ai une erreur quand je génère mon code au niveau de l'éxécution de la requete mais je ne vois pas trop ! Cela me met une erreur de syntaxe

    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
     
    Dim con As New OleDb.OleDbConnection
     
        Public Sub insertUSER(ByVal username As String, ByVal mdp As String, ByVal quest As String, ByVal rep As String)
            'vérif des passages de paramètres
            MessageBox.Show(username & mdp & quest & rep)
            'chaine de connection
            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & createChemin()
            'chaine des paramètres
            Dim valeur As String = username + "," + mdp + "," + quest + "," + rep
            MessageBox.Show(valeur)
            'message d'info
            MessageBox.Show("Connection à la base : OK", ".:: Connection", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Dim insert As OleDb.OleDbCommand
            Dim sql_ajouter As String
            sql_ajouter = "INSERT INTO USERS(login,password,question,reponse) VALUES(" + valeur + ")"
            Dim requete As String = sql_ajouter
            MessageBox.Show(requete)
            insert = New OleDb.OleDbCommand(sql_ajouter, con)
            'ouverture connection
            con.Open()
            insert.ExecuteNonQuery()
            con.Close()
        End Sub
    Merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Bonjour,

    1) Utiliser des requêtes paramétrées pour éviter injections SQL, pour améliorer la performance, et pour éviter ce genre d'erreur

    2) Ton erreur vient du fait que tu n'insères pas les quotes :

    Tu te trouves donc avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO USERS(login,password,question,reponse) VALUES(username, mdp, quest, rep)
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO USERS(login,password,question,reponse) VALUES('username', 'mdp', 'quest', 'rep')
    Toutefois évites de corriger en ajoutant simplement les quotes dans la concaténation, privilégies les requêtes paramétrées.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Août 2011
    Messages : 103
    Par défaut
    J'ai fait comme vous me l'aviez conseillé de passer des paramètre mais cela m'affiche une erreur de syntaxe

    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
     
    Public Sub insertUSER()
            'chaine de connection
            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & createChemin()
            'message d'info
            MessageBox.Show("Connection à la base : OK", ".:: Connection", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Dim insert As OleDb.OleDbCommand
            Dim sql_ajouter As String
            sql_ajouter = "INSERT INTO USERS(login,password,question,reponse) VALUES(username, mdp,quest, rep)"
            insert = New OleDb.OleDbCommand(sql_ajouter, con)
            insert.Parameters.AddWithValue("username", inscription.TBlogin.Text)
            insert.Parameters.AddWithValue("mdp", inscription.TBmdp.Text)
            insert.Parameters.AddWithValue("quest", inscription.CBquest.Text)
            insert.Parameters.AddWithValue("rep", inscription.TBrep.Text)
            'ouverture connection
            insert.Connection.Open()
            insert.ExecuteReader() 'ERREUR DE SYNTAXE DANS l'instruction insert into
            insert.Connection.Close()
        End Sub

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par thomasaurelien Voir le message
    J'ai fait comme vous me l'aviez conseillé de passer des paramètre mais cela m'affiche une erreur de syntaxe
    Remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql_ajouter = "INSERT INTO USERS(login,password,question,reponse) VALUES(username, mdp,quest, rep)"
    Par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql_ajouter = "INSERT INTO USERS(login,password,question,reponse) VALUES(@username, @mdp,@quest, @rep)"
    Il faut lui indiquer que username, mdp,quest, rep sont des paramètres. Le '@' est là pour ça.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Août 2011
    Messages : 103
    Par défaut prob requete access
    toujour le même prob même en mettant le @

    Erreur de syntaxe dans l'instruction INSERT INTO.

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Bonjour,

    pouvez-vous essayer en remplaçant les 4 valeurs pas des "?"
    Je n'utilise pas OLEDB mais selon les providers les paramètres ne sont pas déclarés/utilisés pareil.
    En utilisant des "?" les paramètres doivent du coup êtres déclarés dans le bon ordre.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql_ajouter = "INSERT INTO USERS(login,password,question,reponse) VALUES(?, ?, ?, ?)"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ode15i utilisation difficile?
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 0
    Dernier message: 09/01/2013, 00h21
  2. [VB.Net] Utilisation de ExecuteNonQuery()
    Par AcidX dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/05/2009, 16h08
  3. Réponses: 11
    Dernier message: 19/02/2009, 14h49
  4. [Oracle8i] Utilisation d'index difficile à comprendre
    Par Drizzt [Drone38] dans le forum SQL
    Réponses: 2
    Dernier message: 03/03/2008, 15h59
  5. Récuperation id difficile pour utilisation css
    Par lynchmaniac dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/02/2006, 17h39

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