Domanda

Sto cercando di scrivere un programma C #, in cui quando un utente inserisce alcuni dati in una casella di testo e fa clic su un " salva " pulsante, le informazioni sono memorizzate in una sorta di file che quando il programma viene aperto la volta successiva, le informazioni vengono caricate automaticamente.

Sto usando Visual C # express. Qual è il modo migliore per farlo senza richiedere una sorta di database come MySQL o MSSQL o Access?

Se l'unico modo o il modo più semplice è un database, preferirei usare Access. In tal caso, l'utente del programma deve aver installato Access affinché il mio programma possa essere eseguito sul proprio computer? Cosa succede se vado con un altro database?

P.S.

Ho dimenticato di menzionare, preferirei che l'utente non fosse in grado di accedere a questo file e leggere facilmente i contenuti. Il file di testo senza crittografia sarebbe facile da aprire. Un modo per crittografarlo? Inoltre, se uso un delimitatore come ':', significa che l'utente non può usare quel personaggio. Quindi, in qualsiasi altro modo?

Grazie!

È stato utile?

Soluzione

Rendi serializzabili i tuoi dati utente aggiungendo la parola chiave:

[Serializable]

sopra la struttura dei dati. Quando carichi la finestra di dialogo, carica la struttura serializzata dal disco e quando lasci la finestra di dialogo, salva la struttura dei dati.

Dal punto di vista dello stile, probabilmente non dovresti avere la finestra di dialogo che modifica i dati fino a quando la finestra di dialogo non viene chiusa (se è modale).

Per salvare:

    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;

    }

Per caricare:

    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;
    }

Puoi anche usare 'using' su uno stream, ma questo codice è piuttosto semplice, credo. Significa anche che puoi aggiungere più elementi in MyObject.

Modifica: per la crittografia, puoi aggiungere in AES o qualcosa di simile. Potrebbe essere eccessivo per te, e salvare il file come binario può renderlo leggibile da qualcosa come il blocco note, ma non facilmente modificabile. Ecco una lunga spiegazione sulla crittografia reale:

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

Altri suggerimenti

Sql Compact Edition nasconderebbe i dati dall'essere facilmente accessibile (ed è gratuito). È inoltre possibile proteggere con password un database CE. Un database SQL CE è contenuto completamente in un file .SDF, come Access, in modo da poter copiare il file .sdf in giro e non doversi preoccupare della connettività di rete, ecc.

Se la tua applicazione deve essere utilizzata da una sola persona, archivia semplicemente i tuoi dati in un file (XML ti darebbe una struttura)

Se l'applicazione verrà utilizzata da più persone e i dati condivisi tra loro, un database è l'opzione migliore. Se si utilizza un database, sì, sarà necessario disporre di un database installato sul computer degli utenti, anche se è possibile farlo in modo trasparente per l'utente, per questo è meglio con un database incorporabile, qualcosa come MySQL sarebbe il migliore scommessa.

(EDIT: il database in realtà non deve essere sul computer degli utenti, ma dovrebbe essere in grado di vederlo dal suo computer)

Se è molto semplice, puoi inserirlo in un semplice file di testo. Per dati più strutturati potresti prendere in considerazione l'archiviazione come CSV e l'analisi o la creazione di un documento Xml e il salvataggio su disco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top