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

C# Discussion :

DataAdapter : DataSet -> PostgreSql


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 123
    Points
    123
    Par défaut DataAdapter : DataSet -> PostgreSql
    Bonjour à tous,
    Cela fait un certain temps que je galère c'est pour ça que je me tourne vers vous. J'ai déjà pas mal chercher sur internet, mais tout ce que j'ai trouvé m'a paru très obscur et je n'ai pas réussi à arriver à quelque chose.
    Voila donc mon problême:

    Je dispose de 2 tables :
    - acheteurs
    - lots

    Il y a dans la table acheteur 9 colonnes. Seulement 7 sont dans le dataSet. Pour la table acheteur, il y a 3 champs primaire : idEtude, idVente et numAcheteur. idEtude et idVente ne sont pas dans le dataset, mais en variable local du programme.
    De même dans la table lots, il y a 6 colonnes et ses clés primaires sont idEtude, idVente et numLot. De même idEtude et idVEnte ne sont pas dans le dataset.

    Donc quand je cherche à mettre à jour la base de donnée (toutes les 5 secondes pour l'instant), je n'y arrive pas et cela fait deux jours que j'essaye mais jamais rien....

    Donc j'utilise NpGsql pour la connexion avec la base de donnée qui est donc PostGreSql.

    Si vous pouvier me donner un ou deux exemples ou tuto car j'ai vraiment du mal et je commence un peu à saturer .

    De plus j'avais quelques question qui m'aideront (j'espere, un peu) à comprendre :
    - Comment faire avec la méthode DataAdapter.Update et une requête UPDATE pour que le numlot ou numacheteur dans la condition WHERE soit la version Original et non la version Current ??
    - Et une autre question qui a plus attrait à l'architecture de mon appli, me conseillerez vous plus de faire les UPDATE à chaque changement de l'utilisateur ou plutôt de manière périodique? De même pour les Select ? L'appli ne serait pas dans un environnement tres concurentiel, c'est à dire que une ou deux personnes (et encore) seulement risque d'acceder au même donnée au même moment.


    Merci d'avance pour toutes vos réponses,
    Inarius

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    la méthode DataAdapter.Update et une requête UPDATE pour que le numlot ou numacheteur dans la condition WHERE soit la version Original et non la version Current ??
    En faisant une requête paramétrée on peut faire référence à la version corrante pour les nouvelles valeurs et à l'original dans la clause WHERE.
    me conseillerez vous plus de faire les UPDATE à chaque changement de l'utilisateur ou plutôt de manière périodique? De même pour les Select ?
    Plûtot à chaque changement pour simplifier la gestion d'erreurs, sauf peut-être lorsqu'on fait un traitement "batch".
    L'appli ne serait pas dans un environnement tres concurentiel, c'est à dire que une ou deux personnes (et encore) seulement risque d'acceder au même donnée au même moment.
    Dan ce cas, on privilégiera l'approche dite "optimiste" qui consiste à ne modifier que les enregistrements inchangés (avec un WHERE portant sur tous les champs) et on évitera l'option "pessimiste" qui consiste à mettre un verrou lorsqu'on entre en édition.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 123
    Points
    123
    Par défaut
    Merci graffito pour ces réponses.

    Mais n'etant encore qu'etudiant, je ne connais pas tout (encore heureux ^^, sinon pourquoi je me casse le cul à étudier ) mais qu'entant tu par requete paramétré?

    Par exemple , est ce que la requête suivante est une requête paramétré?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "UPDATE acheteurs SET (numlot='" + datarow["numlot", DataRowVersion.Current] + ", .........) WHERE (idEtude='" + this.idEtude + "' AND idVente='"..."' AND numlot='" + datarow["numlot", DataRowVersion.Original] + "')"
    Et comment l'utiliser avec la méthode Update du DataApdapter?
    Et quel est la différence avec une requête préparé?

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    requête paramétré
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Create the UpdateCommand.
    SqlCommand command = new SqlCommand(
      "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName" +
      "WHERE CustomerID = @oldCustomerID", connection);
    // Add the parameters for the UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
    SqlParameter parameter = command.Parameters.Add(
            "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;
    
    adapter.UpdateCommand = command;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 123
    Points
    123
    Par défaut
    Merciiii

    J'ai enfin compris le principe et comment ca marche
    Merci beaucoup Graffito, et je vais essayer de mettre ca en place

    Mais encore une petite question: sachant que j'ai deux tables,vaut t'il mieux avoir 2 dataAdapter et fixer au démarage les requetes de mise à jour, ou n'avoir qu'un seul dataAdapter et changer les requêtes à chaque Update?

    Encore merci
    Inarius

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    2 tables = 2 dataAdapter initialisés au départ.
    Rien d'impératif, mais j'ai toujours fait comme ça !
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 123
    Points
    123
    Par défaut
    Ok merci et dsl pour la réponse tardive.

    Mais j'ai de nouveau un problême
    Cette fois ci c'est avec NpgSQL. La je met à jour à chaque fois qu'il y a eu changmenet dans le dataset. Mais lorsque je fais le Update, il me met ca comme erreur:
    ERROR: 42601: syntax error at or near "aaaaaaaaa"
    La requête qui provoque l'erreur ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO lots (idetude, idvente, numlot, designation) VALUES ('1', '1', '((1)::int4)', '((E'aaaaaaaaa')::text)')
    Donc c'était pour savoir d'où venait '((E'....')::text)'. Le "::text" je peut comprendre mais pourquoi le "E".

    Et pour les string, quel longueur vaut-il mieux mettre dans le dataAdapter sachant qu'avec le text, il n'y a pas de longueur prédéfinie ?

    Merci d'avance pour vos réponses,
    Inarius

Discussions similaires

  1. dataadapter & dataset
    Par olibara dans le forum C#
    Réponses: 2
    Dernier message: 28/02/2008, 16h49
  2. [C#] DataAdapter et DataSet
    Par diaboloche dans le forum Accès aux données
    Réponses: 2
    Dernier message: 17/02/2007, 17h12
  3. [C#] Mise a jour dataset sans dataAdapter
    Par King-Greg dans le forum Accès aux données
    Réponses: 5
    Dernier message: 10/12/2006, 15h17
  4. Réponses: 6
    Dernier message: 18/06/2006, 00h22
  5. [VB.net][PostgreSQL & ODBC] DataSet => NO_DAT
    Par rebolon dans le forum Accès aux données
    Réponses: 2
    Dernier message: 28/01/2004, 09h01

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