2 votes

Comment insérer des données dans une base de données en tant qu'objet sérialisé

Ma question de base est comment insérer des données dans une base de données sous forme d'objet sérialisé et comment les extraire et les utiliser ensuite ... toute suggestion !!?
par exemple :

{id:1, userId:1, type:PHOTO, time:2008-10-15 12:00:00, data:{photoId:2089, photoName:Un voyage à la plage}}

comme vous le voyez, comment pourrais-je insérer des données dans la colonne Data et comment les utiliser !?
une autre question est que si j'ai stocké le photoName à l'intérieur de Data au lieu d'utiliser des JOINS et d'obtenir le nom de sa table (photos) en fonction de son Id, cela ne mettra pas à jour le photoName (n'est-ce pas !?) en plus de cela, je ne pourrai pas établir de relation entre la table photos et la table actuelle - (Id => photoId) - si je stockais les données de cette manière ... donc une partie du problème est que je ne sais pas exactement quel type d'informations vont être stockées dans la colonne Data donc je ne peux pas personnaliser une colonne distincte pour chaque type de ces informations ...

1voto

Mitchel Sellers Points 38352

Typiquement, je vois deux options pour vous ici.

  1. Vous pouvez stocker un objet sérialisé XML dans la base de données, et simplement utiliser la Serialization XML standard, voici un exemple que vous pouvez adapter à vos besoins.

  2. Vous pouvez créer une vraie table pour cet objet, et faire les choses à la manière "Standard".

Avec l'option 1, filtrer/joindre/rechercher les informations dans la colonne "data" bien que toujours techniquement possible, n'est PAS quelque chose que je recommanderais et serait plus adapté à un processus de stockage statique à mon avis. Quelque chose comme une entité de paramètres utilisateur, ou un autre élément très peu susceptible d'être nécessaire pour une requête backend.

Avec l'option 2, oui, vous devez faire plus de travail, mais si vous définissez bien l'objet, cela sera possible.

Clarification En ce qui concerne mon exemple dans le #1 ci-dessus. Vous écririez dans un flux de mémoire, etc pour la sérialisation plutôt que dans un fichier.

1voto

dahlbyk Points 24897

Si vous ne voulez pas stocker les données de manière relationnelle, il vaut vraiment mieux ne pas utiliser de base de données relationnelle. Plusieurs bases de données d'objets supportent le JSON et seraient en mesure de gérer ce genre de problème assez facilement.

0voto

Rakesh Goyal Points 783

Vous pouvez le stocker sous forme de chaîne JSON et utiliser JSONSerializer de la bibliothèque JSON

http://json-lib.sourceforge.net/apidocs/index.html

pour convertir un javabean en chaîne/objet JSON et vice versa.

En général, nous utilisons ceci pour stocker la configuration lorsque le nombre de paramètres de configuration est inconnu.

0voto

KMån Points 7972

En ce qui concerne l'enregistrement d'un objet dans votre base de données; vous pouvez sérialiser votre objet en xml en utilisant XDocument.ToString() et le sauvegarder dans la colonne de type de données xml de la base de données.

cmd.Parameters.AddWithValue("@Value", xmldoc.ToString());

Vérifiez, Travailler avec le type de données XML dans SQL Server

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X