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 :

Problème de concurrence dans mon updateCommand


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Problème de concurrence dans mon updateCommand
    Bonjour,
    j'ai un problème depuis un moment, je n'arrive pas à mettre à jour ma base de donnée mySQL seulement pour deux tables ! J'ai un probleme de concurrence apparemment "Concurrency violation: the UpdateCommand affected 0 of the expected 1 records". je suis seul à utiliser l'application, j'ai touché un peu à tout mais rien n y fait, j'espère que quelqu'un connaît mieux que moi le probleme pour m'aider. J'ajoute que mes mises à jour sont faites via un DataGrid et qu'un bouton Enregistrer vient confirmer l'envoi vers la base de données.
    S'il faut des précisions n'hésitez pas!
    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Points : 76
    Points
    76
    Par défaut
    s'il y a un morceau de code ça sera mieux

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Pas de problème, en fait je crée tout mon dataset ac mes relations dès le lancement de l'appli donc pour la table qui m ennuie je la crée ainsi:

    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
    Private Function initTableNapac() As DataTable
                Dim reqSql As String
                Dim uneTable As DataTable
                uneTable = New DataTable
     
                'reqSql = "select num_napac, n.num_operation, n.date, montant_AE_NAPAC, montant_DCP_NAPAC, montant_affecte from napac n, operations o where n.num_operation = o.num_operation and year(o.date) = " + Annee + " order by num_napac"
                reqSql = "select * from napac"
                daNapac = New MySqlDataAdapter(reqSql, cnxStr)
                ' instanciation d'un objet DataTable en précisant le nom de la table
     
     
                daNapac.MissingSchemaAction = MissingSchemaAction.AddWithKey
                daNapac.Fill(uneTable)
                'uneTable.AcceptChanges()
                Dim monCB As MySqlCommandBuilder
     
                monCB = New MySqlCommandBuilder(daNapac)
     
     
                Return uneTable
            End Function
    Je l'insère ensuite dans le dataset...bref tout ça ça marche, ensuite sur l'interface où apparaissent les données le code du bouton enregistrer c'est:

    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
    Private Sub Button7_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
     
            Try
     
                Dim monDa As MySqlDataAdapter
                Dim maTable As DataTable
                monDa = My.Application.DataAdapterNapac
                maTable = My.Application.DataTableNapac
     
                monDa.Update(monDs, maTable.TableName)
     
                load_page()
            Catch ex As DBConcurrencyException
                MessageBox.Show("Erreur : " + ex.Message)
                load_page()
            End Try
     
        End Sub
    Voilà, s'il faut plus d'explications, n'hésite pas ! Le load_page() c'est juste une fonction qui met à jour toute l'interface, rien à voir avec l'enregistrement proprement dit!
    Merci

  4. #4
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Salut et bienvenue

    Il est toujours conseille d'ouvrir une connection le plus tard possible et de la fermer une connection le plus tot possible, or je vois pas de cnxStr.close

    T'est certain de pas avoir une vielle version de ton driver?

    Enfin ca peut venir des verrous dans ta base, mais je suis pas un expert Mysql (un enregistrement ne peut etre modifie tant qu'il est utilise)

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    En fait là je suis en mode déconnecté, tout mon dataset est chargé dès le départ avec les dataAdapters pour les mises à jour. Je n'ai donc pas besoin d'ouvrir ou de fermer de connexion dans ce type d'utilisation. J'ouvre et je ferme une connexion quand j'exécute directement une requête sur la base. De plus les mises à jour s'effectue bien pour toutes mes autres tables seules deux tables n'acceptent pas les mises à jour. Le problème ne se situe donc pas là.
    En fait quand je mets à jour une ligne dans ma datagridview, le bouton enregistrer me crée les commandes Update et Delete (grâce au mySQLCommandBuilder), il compare ensuite si entre le moment où j'ai affiché la datagridview et le moment où j'enregistre quelqu'un a modifié la table, dans ce cas justement il m'envoie l'erreur comme quoi ce que je vois n'est plus valable, d'où le problème de concurrence, sinon il effectue la mise à jour comme pour mes autres tables. Seulement là je suis seul à me servir de la base de données, et donc de la table!
    J'espère que vous comprenez...?

    Merci de votre aide

    J'ajoute que mon DeleteCommand ne fonctionne pas non plus..!

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    S'il vous plaît, personne ne voit comment résoudre mon problème..??,

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Désolé d'insister, peut être qu'en remettant mon message en haut de la fil des gens vont penser à moi...
    Mon message d'erreur est en fait ça: "Violation de l'accès concurrentiel : UpdateCommand a affecté 0 des enregistrements 1 attendus", c'est à dire ce que j'ai écrit au début mais en français ici..!
    J'ai vraiment besoin d'aide c'est urgent, merci de faire de votre mieux si vous connaissez un peu le sujet!

  8. #8
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Faudrait que t'explore la hierarchie des Exceptions (inner) tu devrais trouver la requete qui pose probleme

    Il y a peut etre un autre bout de code qui d'une facon ou d'une autre est connecte a la db pendant la tentative de mise a jour

Discussions similaires

  1. Problème de blending dans mon motion blur
    Par dams32 dans le forum OpenGL
    Réponses: 13
    Dernier message: 07/04/2007, 20h28
  2. Problème de height dans mon conteneur
    Par darcy dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 19/12/2006, 09h37
  3. [C# 2.0] Problème de DLL dans mon site web
    Par Rodie dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/12/2006, 16h43
  4. Problème d'affichage dans mon état
    Par gontrand16 dans le forum Access
    Réponses: 6
    Dernier message: 05/07/2006, 20h29
  5. Problème de paramètres dans mon code javascript
    Par cocacollection dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/03/2006, 10h53

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