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 :

SVP quelqu'un me corrige cette requête UPDATE


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 63
    Points : 36
    Points
    36
    Par défaut SVP quelqu'un me corrige cette requête UPDATE
    salut, je ne trouve pas où est le problème dans cette syntaxe

    dans ce code j'ai la possibilité d'insérer ou mettre à jours un enregistrement dans la table USERS dont les champs sont : id(entier long, primary key);name ;gender; password; valid (texte court)
    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
     
    Dim cn As New OleDb.OleDbConnection
            cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\data.accdb"
     
    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
    Dim cmd As New OleDb.OleDbCommand
            If Not Cn.State = ConnectionState.Open Then
                'open connection if it is not yet open
                Cn.Open()
            End If
     
            cmd.Connection = Cn
            'check whether add new or update
            If Me.txtdID.Tag & "" = "" Then
                'add new 
                'add data to table
                cmd.CommandText = "INSERT INTO USERS(id, name, gender, password, valid) " & _
                                " VALUES(" & Me.txtdID.Text & ",'" & Me.txtName.Text & "','" & _
                                Me.cboGender.Text & "','" & Me.txtPassWord.Text & "','" & _
                                Me.txtValidPassWord.Text & "')"
                cmd.ExecuteNonQuery()
            Else
                'update data in table
                cmd.CommandText = "UPDATE USERS " & _
                            " SET id=" & Me.txtdID.Text & _
                            ", name='" & Me.txtName.Text & "'" & _
                            ", gender='" & Me.cboGender.Text & "'" & _
                            ", password='" & Me.txtPassWord.Text & "'" & _
                            ", valid='" & Me.txtValidPassWord.Text & "'" & _
                            " WHERE id=" & Me.txtdID.Tag
                cmd.ExecuteNonQuery()
            End If
            'refresh data in list
            RefreshData()
            'clear form
            Me.btnClear.PerformClick()
     
            'close connection
            Cn.Close()
    End Sub
    à l’exécution du code l'erreur suivante me bloque
    l'exception OleDbException n'est pas gérée
    merci
    Erreur de syntaxe dans l'instruction UPDATE.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    il te faut un try catch (en général en on met partout)
    , trouver le vrai message d'erreur
    et utiliser les requetes paramétrées (oledbparameter)

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    En complément des remarques de Pol63
    Les requêtes paramétrées sont présentées dans Tuto ou Faq.

    Mettre à jour l'id n'est pas très judicieux.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 63
    Points : 36
    Points
    36
    Par défaut la solution consiste à mettre les champs entre accolades
    la solution que j'ai remarque consiste à mettre les champs de la table à mettre à jours entre accolades ...
    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
     
    Dim cn As New OleDb.OleDbConnection
            cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\data.accdb"
     
    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
    Dim cmd As New OleDb.OleDbCommand
            If Not Cn.State = ConnectionState.Open Then
                'open connection if it is not yet open
                Cn.Open()
            End If
     
            cmd.Connection = Cn
            'check whether add new or update
            If Me.txtdID.Tag & "" = "" Then
                'add new 
                'add data to table
                cmd.CommandText = "INSERT INTO USERS([id], [name], [gender], [password], [valid]) " & _
                                " VALUES(" & Me.txtdID.Text & ",'" & Me.txtName.Text & "','" & _
                                Me.cboGender.Text & "','" & Me.txtPassWord.Text & "','" & _
                                Me.txtValidPassWord.Text & "')"
                cmd.ExecuteNonQuery()
            Else
                'update data in table
                cmd.CommandText = "UPDATE USERS " & _
                            " SET [id]=" & Me.txtdID.Text & _
                            ", [name]='" & Me.txtName.Text & "'" & _
                            ", [gender]='" & Me.cboGender.Text & "'" & _
                            ", [password]='" & Me.txtPassWord.Text & "'" & _
                            ", [valid]='" & Me.txtValidPassWord.Text & "'" & _
                            " WHERE id=" & Me.txtdID.Tag
                cmd.ExecuteNonQuery()
            End If
            'refresh data in list
            RefreshData()
            'clear form
            Me.btnClear.PerformClick()
     
            'close connection
            Cn.Close()
    End Sub

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    password est un mot réservé du moteur de base de données à éviter lorsqu'il s'agit de choisir des noms d'identificateur.
    Les remarques indiquées restent d'actualité pour ce code

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

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 12h40
  2. Sauriez-vous svp m'expliquer cette requête JOIN SVP ?
    Par beegees dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/12/2008, 16h17
  3. Réponses: 11
    Dernier message: 10/12/2008, 21h49
  4. requête update qui marche pas
    Par MrsFrizz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/12/2004, 09h16
  5. PB Requête update
    Par cassi2 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 25/10/2004, 15h15

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