Serialisation XML vers base de données

cs_gautier Messages postés 11 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 24 avril 2007 - 23 avril 2007 à 13:53
cs_gautier Messages postés 11 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 24 avril 2007 - 24 avril 2007 à 14:14
Salut à tous,

Voici mon problème j'utilise la serialisation XML pour enregistrer les sauvegardes de mon application dans une base de données.
La commande INSERT (respectivement UPDATE) est générée et appelée sous forme de chaine de caractère et j'utilise la méthode SqlCommand.ExecuteNonQuery() pour l'exécuter sur le serveur MSSQL.

La requête SQL ressemble à qqch du genre

    "UPDATE tblN2Saves SET value='<?xml version="1.0" encoding="utf-16"....' WHERE SaveId='2daf342qvas42'".

Mon problème se trouve être que l'objet que je serialize fais peter la limite de longeur d'une string sous une architecture 32bits. Je me retrouve avec des erreurs du type OutOfMemory empêchant ma sauvegarde... La serialisation se fait comme ceci:

        public static String serialize(MyClass instance)
        {
            StringBuilder sb = null;
            if (instance== null) return String.Empty;
            XmlSerializer xs = new XmlSerializer(typeof(MyClass ));
            sb = new StringBuilder();
            xs.Serialize(new StringWriter(sb), instance);

            return sb.ToString();
        }

Je souhaite donc supprimer l'utilsiation de cette String et la remplacer par autre chose, la est le problème... Existe-t-il des "stream" pour les DB comme il existe pour un fichier ou un flux réseaux. Ou est-ce que je dois créer un fichier sérialisé sur le disque de la machine et par la suite l'envoyer dans un champ BLOB sur mon SQLServer?

Je suis ouvert à toute propositions de votre part, les seules contraintes sont 32bits, C# 2.0, MSSQL 2000, Application Windows Forms et un object (Collection) d'un très grande taille.

Merci de votre aide / conseils

Gautier

2 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
24 avril 2007 à 13:30
salut,

peut être : http://msdn2.microsoft.com/fr-fr/library/3517w44b(VS.80).aspx

et en plus, à mon avis, il faut stocker le xml dans un blob ou text...

ShareVB
0
cs_gautier Messages postés 11 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 24 avril 2007
24 avril 2007 à 14:14
C'est cool je vais essayer cette solution qui semble répondre à mon problème. Je validerais la réponse si tel est le cas.

Le champ qui recoit le fichier XML est du type text. C'est le seul (avec blob) qui permet d'accepter une longeur variable en la gérant correctement.

Merci :D

Gautier
0
Rejoignez-nous