2009-01-13 8 views
1

J'essaie d'écrire un programme C#, où lorsqu'un utilisateur entre des données dans une zone de texte et clique sur un bouton "Enregistrer", les informations sont stockées dans un type de fichier que lorsque le programme est ouvert la prochaine fois, l'information est automatiquement chargée.C# Stockage des données saisies par l'utilisateur

J'utilise Visual C# express. Quelle est la meilleure façon de le faire sans avoir besoin d'une base de données comme MySQL ou MSSQL ou Access?

Si la seule façon ou la manière la plus simple est une base de données, je préfère utiliser Access. Si oui, l'utilisateur du programme a-t-il besoin que Access soit installé pour que mon programme fonctionne sur son ordinateur? Et si je vais avec une autre base de données?

p.s.

J'ai oublié de mentionner, je préférerais que l'utilisateur ne puisse pas accéder à ce fichier et en lire le contenu facilement. Fichier texte sans cryptage serait facile à ouvrir. Un moyen de crypter cela? De plus, si j'utilise un délimiteur comme ':', cela signifie que l'utilisateur ne peut pas utiliser ce caractère. Donc, d'une autre manière?

Merci!

Répondre

3

Faites vos données utilisateur sérialisable en ajoutant le mot-clé:

[Serializable] 

au-dessus de votre structure de données. Lorsque vous chargez la boîte de dialogue, chargez votre structure sérialisée à partir du disque et, lorsque vous quittez la boîte de dialogue, enregistrez la structure de données. Du point de vue du style, la boîte de dialogue ne devrait probablement pas modifier les données tant que la boîte de dialogue n'est pas fermée (si elle est modale).

Pour enregistrer:

private bool Save(String inFileName, MyObject inObject){ 
     try { 
      FileStream theStream = File.Open(inFileName, FileMode.Create); 

      BinaryFormatter theFormatter = new BinaryFormatter(); 
      theFormatter.Serialize(theStream, inObject);//add it to the end there 
      theStream.Dispose(); 
      theStream.Close(); 
     } catch{ 
      return false; 
     } 
     return true; 

    } 

Pour charger:

private MyObject Read(String inFileName){ 
     MyObject theReturn = null; 
     try { 

      FileStream theStream = File.Open(inFileName, FileMode.Open, FileAccess.Read);     

      BinaryFormatter theFormatter = new BinaryFormatter(); 
      theReturn = (CImageData)theFormatter.Deserialize(theStream);//add it to the end there 
      theStream.Dispose(); 
      theStream.Close(); 
     } 
     catch { 
      return null; 
     } 
     return theReturn; 
    } 

Vous pouvez également utiliser 'en utilisant' sur un cours d'eau, mais ce code est assez simple, je pense. Cela signifie également que vous pouvez ajouter plus d'éléments dans MyObject. Editer: Pour le chiffrement, vous pouvez ajouter AES ou quelque chose de similaire. Cela peut être exagéré pour vous, et enregistrer le fichier en tant que binaire peut le rendre lisible par quelque chose comme le bloc-notes, mais pas facilement modifiable. Voici une longue explication sur le chiffrement réel:

http://msdn.microsoft.com/en-us/magazine/cc164055.aspx

0

Si c'est très simple, vous pouvez le placer dans un fichier texte. Pour des données plus structurées, vous pouvez envisager de le stocker au format CSV et de l'analyser ou de créer un XmlDocument et de l'enregistrer sur le disque.

1

Si votre application ne doit être utilisé par une seule personne alors simplement stocker vos données dans un fichier (XML vous donnerait une certaine structure)

Si votre application sera utilisée par plusieurs personnes et les données partagées entre eux, puis une base de données est votre meilleure option. Si vous utilisez une base de données alors oui, vous aurez besoin d'une base de données installée sur votre ordinateur, bien qu'il soit possible de le faire de manière transparente pour votre utilisateur, pour que vous puissiez utiliser une base de données intégrable. pari.

(EDIT: la base de données ne fait pas être sur l'ordinateur des utilisateurs, mais il devrait être en mesure de le voir de son coputer)

2

Sql Compact Edition se cachaient les données d'être facilement accessible (et son gratuit). Vous pouvez également protéger par mot de passe une base de données CE. Une base de données SQL CE est contenue complètement dans un fichier .SDF, comme Access, de sorte que vous pouvez copier le fichier .sdf et ne pas avoir à vous soucier de la connectivité réseau, etc.

Questions connexes