2010-06-04 3 views
0

Dans un programme de gestionnaire de contacts, j'ai stocké des données dans des fichiers CSV pour chaque contact et je voudrais un moyen de compresser ces données dans un seul fichier.Compression d'une base de données dans un seul fichier?

J'ai essayé d'utiliser des outils de saisie de données dans la boîte à outils et la classe modèle de Visual Studio, même si je n'ai jamais vraiment compris comment les utiliser. Ce qui serait particulièrement pratique, c'est si je pouvais stocker une instance générique d'une classe, plutôt que d'en avoir une représentation sous forme de chaîne, puis l'analyser.

Je voudrais aussi savoir comment dire au programme quoi faire quand un fichier est ouvert (j'ai remarqué dans les propriétés comment associer un type de fichier au programme mais je ne sais pas comment le dire que faire quand il est ouvert).

+0

Vous posez une question ici? – Oded

+0

Oui ... comment puis-je lui dire quoi faire quand un fichier est ouvert, et comment puis-je faire pour réduire les données dans un fichier efficace ... peut-être si j'élabore ... Je me rends compte que je n'ai pas dit certaines choses que je voulais dire: Je ne sais rien à propos de SQL bien qu'il soit généralement recommandé, et puis-je stocker un objet dans un champ de données SQL par opposition à une chaîne? – Assimilater

+0

Les gars Je suis désolé de l'ambiguïté de cette question ... Je ne savais pas comment mieux le mettre ... en partie parce que je cherchais à utiliser la "sérialisation binaire" avant de savoir ce que le terme était .. – Assimilater

Répondre

1

À mon humble avis, passer à sqlite. Vous serez en mesure d'interroger plus rapidement, de le compresser, et bien plus encore, en travaillant avec un fichier csv.

+0

Je n'ai pas de fichier csv, j'en ai plusieurs, un pour chaque contact, et un dossier pour les notes qui sont stockées dans un fichier texte pour chaque note. Cela semble être un programme plutôt qu'un outil pour les studios visuels ... et je n'aurais aucune idée de comment je pourrais l'utiliser dans mon scénario ... (Personnellement, je préfère garder tout dans le capacités de l'édition expresse que j'ai tout prêt, ils ont des outils de données, je ne suis pas sûr de savoir comment les utiliser ...) – Assimilater

+0

En repensant à mes anciens messages, lol. Cela aurait été la meilleure réponse – Assimilater

-1

Trouvé cet article sur la sérialisation et cela fonctionne très bien!

http://www.vbdotnetheaven.com/UploadFile/Nimusoft/Serialization105022008052559AM/Serialization1.aspx

modifier: que je devrais probablement poster plus. J'ai un IOwner de classe, et la liste de cette classe contient toute ma base de données. Donc, j'ai ajouté des balises de sérialisation à cette classe et d'autres auxquels il fait référence substituer ensuite dans ces propriétés avec celles indiquées sur l'article:

Imports System.Runtime.Serialization 
Imports System.Runtime.Serialization.Formatters.Binary 
Imports System.IO 
Namespace BinarySerialization 
    <Serializable()> _ 
    Public Class IFile 
     Implements ISerializable 
     Public Contacts As List(Of IOwner) 
     Public Self As IOwner 
     Public Cars As List(Of Vehicle) 
     Public path As String 
     Public Sub New() 

     End Sub 
     Public Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext) 
      Data.Self = info.GetValue("Self", GetType(IOwner)) 
      Data.Contacts = info.GetValue("Contacts", GetType(List(Of IOwner))) 
      Data.Cars = info.GetValue("Cars", GetType(List(Of Vehicle))) 
     End Sub 
     Public Sub WriteFile() 
      Dim s As New FileStream(path, FileMode.Create, FileAccess.ReadWrite) 
      Dim B As New BinaryFormatter() 
      B.Serialize(s, Me) 
      s.Close() 
     End Sub 
     Public Function ReadFile() As IFile 
      Dim Fs As New FileStream(path, FileMode.Open, FileAccess.Read) 
      Dim F As New BinaryFormatter() 
      Dim s1 As IFile = DirectCast(F.Deserialize(Fs), IFile) 
      Fs.Close() 
      Return s1 
     End Function 
#Region "ISerializable Members" 
     Public Sub GetObjectData(ByVal info As SerializationInfo, ByVal context As StreamingContext) Implements ISerializable.GetObjectData 
      info.AddValue("Self", Data.Self) 
      info.AddValue("Contacts", Data.Contacts) 
      info.AddValue("Cars", Data.Cars) 
     End Sub 
#End Region 
    End Class 
End Namespace 

MISE À JOUR 2016

sérialisation binaire est pas recommandé pour les structures complexes qui sont sous réserve de modifications. L'utilisation d'une méthode de stockage de base de données telle que SQLite et l'utilisation d'un ODB (modèle de base de données d'objets) aurait été préférable.

Questions connexes