Pregunta

Estoy tratando de escribir un programa C #, donde cuando un usuario ingresa algunos datos en un cuadro de texto y hace clic en "guardar" botón, la información se almacena en algún tipo de archivo que cuando se abre el programa la próxima vez, la información se carga automáticamente.

Estoy usando Visual C # express. ¿Cuál es la mejor manera de hacer esto sin requerir algún tipo de base de datos como MySQL o MSSQL o Access?

Si la única forma o la más fácil es una base de datos, prefiero usar Access. Si es así, ¿necesita el usuario del programa Access instalado para que mi programa se ejecute en su computadora? ¿Qué pasa si voy con otra base de datos?

p.s.

Olvidé mencionar, prefiero que el usuario no pueda acceder a este archivo y leer el contenido fácilmente. El archivo de texto sin cifrado sería fácil de abrir. ¿Alguna forma de encriptar esto? Además, si uso un delimitador como ':', eso significa que el usuario no puede usar ese carácter. Entonces, ¿de alguna otra manera?

¡Gracias!

¿Fue útil?

Solución

Haga que sus datos de usuario sean serializables agregando la palabra clave:

[Serializable]

sobre su estructura de datos. Cuando cargue el cuadro de diálogo, cargue su estructura serializada desde el disco, y cuando salga del cuadro de diálogo, guarde la estructura de datos.

Desde el punto de vista del estilo, probablemente no debería hacer que el cuadro de diálogo cambie los datos hasta que el cuadro de diálogo esté cerrado (si es modal).

Para guardar:

    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;

    }

Para cargar:

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

También puede usar 'usar' en una transmisión, pero creo que este código es bastante sencillo. También significa que puede agregar más elementos a MyObject.

Editar: para el cifrado, puede agregar AES o algo similar. Eso puede ser excesivo para usted, y guardar el archivo como binario puede hacer que sea legible por algo como el bloc de notas, pero no fácilmente editable. Aquí hay una larga explicación sobre el cifrado real:

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

Otros consejos

Sql Compact Edition ocultaría los datos de fácil acceso (y es gratis). También puede proteger con contraseña una base de datos CE. Una base de datos SQL CE está contenida completamente en un archivo .SDF, como Access, para que pueda copiar el archivo .sdf y no tener que preocuparse por la conectividad de red, etc.

Si su aplicación solo debe ser utilizada por una sola persona, simplemente almacene sus datos en un archivo (XML le dará cierta estructura)

Si su aplicación será utilizada por varias personas y los datos compartidos entre ellas, entonces una base de datos es su mejor opción. Si usa una base de datos, sí, necesitará tener una base de datos instalada en la computadora de sus usuarios, aunque es posible hacerlo de manera transparente para su usuario, para eso es mejor que tenga una base de datos incrustada, algo como MySQL sería lo mejor apuesta.

(EDITAR: la base de datos en realidad no tiene que estar en la computadora del usuario, pero necesitaría poder verla desde su computadora)

Si es muy simple, puede colocarlo en un archivo de texto sin formato. Para obtener datos más estructurados, puede considerar almacenarlo como un CSV y analizarlo o crear un XmlDocument y guardarlo en el disco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top