Question

J'essaie d'écrire un programme C # dans lequel, lorsqu'un utilisateur entre des données dans une zone de texte et clique sur un bouton "Enregistrer". bouton, les informations sont stockées dans une sorte de fichier qui est chargé automatiquement lors de la prochaine ouverture du programme.

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

Si le seul moyen ou le moyen le plus simple consiste à utiliser une base de données, je préférerais utiliser Access. Si tel est le cas, l'utilisateur du programme doit-il installer Access pour que mon programme s'exécute sur son ordinateur? Et si je pars 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 lire le contenu facilement. Un fichier texte sans cryptage serait facile à ouvrir. Un moyen de chiffrer cela? De plus, si j'utilise un délimiteur comme ':', cela signifie que l'utilisateur ne peut pas utiliser ce caractère. Alors, de toute autre manière?

Merci!

Était-ce utile?

La solution

Rendez vos données utilisateur sérialisables 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, vous ne devriez probablement pas laisser la boîte de dialogue modifier les données tant qu'elle 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 "using" sur un flux, mais ce code est assez simple, je pense. Cela signifie également que vous pouvez ajouter plus d'éléments dans MyObject.

Modifier: pour le cryptage, vous pouvez ajouter un fichier AES ou similaire. Cela pourrait être excessif pour vous, et enregistrer le fichier en tant que binaire peut le rendre lisible par quelque chose comme le bloc-notes, mais pas facilement éditable. Voici une longue explication sur le cryptage réel:

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

Autres conseils

Sql Compact Edition empêcherait les données d'être facilement accessible (et gratuit). Vous pouvez également protéger par mot de passe une base de données CE. Une base de données SQL CE est entièrement contenue dans un fichier .SDF, comme Access, afin que vous puissiez copier le fichier .sdf sans avoir à vous soucier de la connectivité réseau, etc.

Si votre application ne doit être utilisée que par une seule personne, stockez simplement vos données dans un fichier (XML vous donnerait une structure)

Si votre application doit être utilisée par plusieurs personnes et que leurs données sont partagées, une base de données constitue votre meilleure option. Si vous utilisez une base de données, alors vous devrez obligatoirement installer une base de données sur l'ordinateur de vos utilisateurs. Il est toutefois possible de le faire de manière transparente pour vos utilisateurs. Pour ce faire, utilisez une base de données intégrable. pari.

(EDIT: la base de données n'a pas besoin d'être sur l'ordinateur de l'utilisateur, mais il doit pouvoir la voir depuis son ordinateur)

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 sous forme de fichier CSV et de l’analyser ou de créer un document XmlDocument et de le sauvegarder sur disque.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top