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

Windows Forms Discussion :

Sérialisation et désérialisation d'un dataset


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Points : 26
    Points
    26
    Par défaut Sérialisation et désérialisation d'un dataset
    Bonjour,

    J'ai un dataset qui fonctionne.

    J'aimerai le sauvegarder par une sérialisation binaire.
    Apparemment la sérialisation fonctionne car je retrouve le fichier sur mon disque dur.

    Par contre après la désérialisation, le dataset est vide car lorsque je veux accéder aux données en visualisant le contenu par "MessageBox.Show(ds.Tables("MaTable").Rows.Count)", j'obtient 0 et quand je demande "MessageBox.Show(ds.Tables("MaTable").Rows(0)("Nom"))", le programme m'affiche "Aucune ligne à la position 0".

    Voici le code complet :
    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
     
    ------------------------ Sérialisation --------------------------
     
    Private Sub EnregistrerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EnregistrerToolStripMenuItem.Click
     
    Dim fmtServices As BinaryFormatter
    fmtServices = New BinaryFormatter()
     
    Dim writeDs As Stream = New FileStream("D:\MonFichier.bin", FileMode.OpenOrCreate)
    fmtServices.Serialize(writeDs, DatabaseDataSet)
    writeDs.Close()
     
    End Sub
     
    ----------------------- Désérialisation --------------------
     
    Private Sub OuvrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OuvrirToolStripMenuItem.Click
     
    Dim fmtServices As New BinaryFormatter
     
    Dim readDs As Stream = New FileStream("D:\MonFichier.bin", FileMode.Open)
    DatabaseDataSet = fmtServices.Deserialize(readDs)
    readDs.Close()
     
    MessageBox.Show(ds.Tables("MaTable").Rows.Count)
    MessageBox.Show(ds.Tables("MaTable").Rows(0)("Nom"))
    End Sub
    Qu'est-ce qui manque?

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu affectes le résultat de Deserialize à la variable DatabaseDataSet, mais après c'est la variable ds que tu manipules...

    Sinon, pour info, le DataSet gère nativement la sérialisation XML, via les méthodes WriteXml et ReadXml... évidemment ça prend plus de place que la sérialisation binaire, mais c'est plus portable

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Merci Tomlev pour ta réponse mais çà ne marche pas même si j'utilise tout le temps ds ou DatabaseDataset.

    D'ailleurs dans un module j'avais déclarer Public ds as Dataset = (DatabaseDataset)

    J'aimerais resté en binaire.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par jlm57 Voir le message
    Merci Tomlev pour ta réponse mais çà ne marche pas même si j'utilise tout le temps ds ou DatabaseDataset.
    Ben écoute, j'ai fait le test et pour moi ça marche très bien, donc je pense que c'est quand même lié à ton problème de variable

    Citation Envoyé par jlm57 Voir le message
    D'ailleurs dans un module j'avais déclarer Public ds as Dataset = (DatabaseDataset)
    Et alors ? Si ensuite tu fais "DatabaseDataSet = fmtServices.Deserialize(readDs)", ds n'est plus égal à DatabaseDataSet... ce n'est pas parce qu'à un moment tu as dit que les 2 étaient égaux, qu'ils vont toujours le rester. Si tu remplaces l'un des 2, l'autre ne va pas suivra "automagiquement"...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Ah oui! C'était çà. Cà marche.

    Merci beaucoup Tomlev

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

Discussions similaires

  1. [XStream] Sérialisation et désérialisation de classes
    Par BiM dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/07/2011, 10h26
  2. [WD15] Sérialisation et désérialisation
    Par fucce dans le forum WinDev
    Réponses: 9
    Dernier message: 21/05/2010, 11h05
  3. [PHP 5.3] Sérialiser et Désérialiser un objet dans une variable de session
    Par hervelyon dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2010, 20h26
  4. Sérialisation et désérialisation
    Par Josh42 dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2010, 00h04
  5. Réponses: 6
    Dernier message: 09/10/2009, 17h44

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