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 :

Accés concurentiel en VB.NET


Sujet :

VB.NET

  1. #1
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut Accés concurentiel en VB.NET
    Bonjour,

    Comment peut-on gérer l'accès conurentiel en VB.NET? sur Msdn ce n'est pas très clair pour moi.
    Enfin, mon application (Vb.net/Sql Server) va être utilisée par plusieurs utilisateurs, comment je vais faire pour gérer les accès pessimite et Optimiste?

    Merci

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    je comprends pas trop comment il peut y avoir concurrence, je crois qu'il n'y plus de curseurs comme en vb6 ou ca pouvait créer des problèmes

    il me semble que vb.net ne travaille qu'en mode déconnecté donc il rappatrie les données et c'est tout

    de plus moi quand j'ai une modification à faire dans la base, je la fais par rapport à la clé et non pas par rapport à l'ancienne valeur (ni par rapport à la clé ET en vérifiant si l'ancienne valeur est la même)
    c'est donc la dernière modif qui est prise en compte, et mes clés de changent jamais de valeur ...

    donc je ne comprends pas trop ton soucis
    surtout si ado.net ne gère pas tout ca en travaillant simplement en mode déconnecté
    enfin c'est un point sur lequel j'ai peut etre tord par contre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Merci bien sperot pour l'explication.

    Moi je ne comprends pas non plus vu que c'est un mode déconnecté, et j'ai déjà eu des erreur de violation d'accès concurentiel..


    D'autre par, d'après msdn :

    Toutefois, [B]le contrôle d'accès concurrentiel pessimiste ne peut pas être utilisé dans une architecture déconnectée...
    Qu'est ce que ca peut arriver quand deux utilisateurs se connectent en même temps et tente de modifier le même enregistrement? (je n'ai pas encore tester la connexion de plusieurs utilisateurs à l'application , mais c'est la prochaine tâche que j'ai à réaliser ).
    Et qu'est ce que tu en pense si je gère les accès avec ADO au lieu de ADO.NET, ca sera une bonne idée ou plutôt petre de temps?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    normalement faire 2 update en meme temps, c'est sql server après qui gère ca, et c'est peu probable que ca plante (hormis gros traitement et deadlock)

    c'est avec des dataset que tu as eut des accès concurrentiels ? car je connais pas trop le dataset ... ca se trouve il est pas en déconnecté

    sinon pour ado, ca serait à mon avis un peu moins performant, demanderait plus de code, et puis ca fait pas très propres, c'est comme faire construire une maison neuve et mettre du papier peint marron avec des grosses fleurs ...
    c'est pas la meme génération
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    grave! pour la comparaison!
    Ok, je vais m'en défaire ce ADO classique.

    Oui, c'est avec le DataSet que j'ai déjà eu l'erreur, tu utilise quoi sinon?
    C'est vrai que les DataSet's ne me font pas sauter de joie, mais c'est la prmiere chose que j'ai trouvé abordable pour me lancer vu le temps limité que j'ai.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    moi j'utilise le sqldatareader et le sqlcommand

    le sqldatareader permet juste d'extraire les données par contre

    je n'utilise aucun databinding, je sais meme pas comment ca marche
    j'ai essayer un peu le dataset dans un datagridview, j'ai meme pas trouvé pour que les modifs dans le datagridview soit répercutées sur la DB
    enfin je pensais que c'était plus simple


    enfin là ou je bosse on a développé un datagrid pratique
    on lui donne une requete et il se débrouille pour faire l'affichage
    quand on double clic sur case, ca ouvre un popup de saisie et on créé la requete d'update qui va avec, le sqldatareader permet de faire getschema et on a les infos de types, les clés etc...

    en bref il fait environ 5k lignes mais maintenant on en pose partout et ca se débrouille, sur une appli multi utilisateurs

    liste non exhaustive de ce qu'il fait :
    - remplissage semi asynchrone ultra rapide
    - possibilité d'afficher des images
    - bouton modifier
    - bouton supprimer
    - bouton mettre à jour la grille par rapport à la DB
    - bouton imprimer
    - colorisation des lignes selon la valeur d'une colonne
    - filtre multicritère sans repasser par la base
    - tri multicolonne sans repasser par la base
    etc ...

    si le datagridview de microsoft était comme ca, ca aurait simplifié la vie de pas mal de monde

    meme sur quelque chose d'aussi complet que le framework, il est encore possible de dire qu'il y a des choses pas assez poussées ^^

    le datagridview par exemple, c'est expliqué dans l'aide que pour plusieurs milliers de lignes, il va ramer à fond, qu'il faut alors mettre virtualmode à true et gérer soit même l'affichage des données à l'intérieur
    chose qu'on a faite du coup, mais ils auraient pu le faire au lieu de le dire ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    cool !
    Donc avec un DataReader et SqlCommand, on peut faire des operations(INSERT, UPDATE, DELETE) ?
    Moi, ce que je fais ou en fait "obligé à faire" dans un premier temps (l'essentiel c'est faire tourner la bête) , c'est que j'utilise des DataSet's mais pas avec les propriétés et methodes qui offrent, je fais une drôle de combinaison, DataSet, DataAdapter, et Sql Command et ca fonctionne. Je m'étais dis que pour le début l'essentiel c'est respecter les DeadLines et faire tourner la bête, et tant que le code reste maintenable, je l'optimiserais au fure et à mesure.
    Merci pour le détail .

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    le sql command contient une requete soit un select soit n'importe quoi d'autre (insert, update, delete, ou meme create table)

    pour une execution simple, le sqlcommand suffit

    le datareader permet de récupérer les données pour un select

    le dataset contient les données et le dataAdapter s'occupe de générer les requete type update ou autre


    le mieux serait de voir avec reflector comment ca se passe, mais les classes d'accès aux données sont chiantes à lire car décomposées entre classes de bases et classes spécifiques (sql server, access ...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Hello,

    Ok,Je vais donc juste terminer une phase (que j'ai déjà commencé avec les DataSet) et essayer de faire le reste avec DataReader et SqlCommand.
    Sinon pour refector, je ne comprends pas bien ce que tu veux dire.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    je disais de voir avec reflector si le dataadapter utilise un datareader ou un autre mode d'accès aux données


    enfin je viens de regarder, le daadapter remplit le dataset avec un datareader ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Merci pour les explications précieuses sperot.

  12. #12
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Tu utilise une colonne horodateur pour gérer les violations d'accès pouvants survenir lors d'un accès optimiste?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    je ne gère rien ni en optimiste, ni en pessimiste
    je n'ai pas de violation d'accès ...
    je n'utilise pas de dataset ni de dataadapter

    si tu arrives à reproduire ton exception de violation d'accès, je suis curieux d'avoir les détails de cette erreur (erreur qui vient de sql ou de .net)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  14. #14
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Adjugé
    Sinon, tiens ce lien si jamais tu veux jetter un coup d'oeil sur la gestion de violation d'accès en mode optimiste.

    http://msdn.microsoft.com/fr-fr/libr...cz(VS.80).aspx

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    si j'ai bien compris, optimiste c'est du vent, tout passe sauf si on vérifie et qu'on se créé les erreurs soit meme

    et pas le que pessimisme existe sur ado.net


    bref nous on est très optimiste, quand quelqu'un modifie une valeur, ca nous dérange pas qu'il ne sache pas que quelqu'un avait déjà modifié

    les données sensibles on les rafrachis toutes les demi seconde, ca pare le problème en partie


    sinon il est aussi possible d'etre averti des modifs
    pour ca, soit les clients parlent entre eux par socket pour dire qu'ils ont modifié telle table ou tel machin
    ou sinon à partir de sql server 2005 (mais pas sur les versions express) il y a les notifications, une option du datareader qui appelle un evenement si le select qui avait été appelé devrait retourner un jeu d'enregistrement différent
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  16. #16
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Tu as un tuto palrant de la manière que tu utilise?

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    la manière que j'utilise quoi ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  18. #18
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    bref nous on est très optimiste, quand quelqu'un modifie une valeur, ca nous dérange pas qu'il ne sache pas que quelqu'un avait déjà modifié

    les données sensibles on les rafrachis toutes les demi seconde, ca pare le problème en partie


    sinon il est aussi possible d'etre averti des modifs
    pour ca, soit les clients parlent entre eux par socket pour dire qu'ils ont modifié telle table ou tel machin
    ou sinon à partir de sql server 2005 (mais pas sur les versions express) il y a les notifications, une option du datareader qui appelle un evenement si le select qui avait été appelé devrait retourner un jeu d'enregistrement différent

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    je te l'ai dit on utilises que des sqlcommand et des sqldatareader

    rien de compliqué donc

    pour les notifications les infos doivent se trouver dans msdn ou google
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  20. #20
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    D'accord, je te tiens au courant dès que je j'affronte de nouveau la violation d'accès avec les DataSet's.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Accès concurentiel en ASP.Net MVC
    Par worm83 dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 13/04/2010, 15h44
  2. [vb 2005]Problème de violation d'accès concurentiel
    Par estelledany dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/06/2006, 17h14
  3. Réponses: 8
    Dernier message: 04/05/2006, 21h25
  4. [VB.Net] - Acces à Excel depuis VB.Net
    Par toninonino dans le forum Windows Forms
    Réponses: 14
    Dernier message: 30/09/2005, 11h12
  5. problème d'acces concurentiel à un fichier
    Par Theoden dans le forum MFC
    Réponses: 2
    Dernier message: 04/03/2004, 09h49

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