Pergunta

Eu estou tentando escrever um programa C #, onde quando um usuário digita alguns dados em uma caixa de texto e clicar em um botão "salvar", as informações são armazenadas em algum tipo de arquivo que quando o programa é aberto a próxima vez, a informação é automaticamente carregado na.

Estou usando o Visual C # Express. Qual é a melhor maneira de fazer isso sem a necessidade de algum tipo de banco de dados como MySQL ou MSSQL ou Access?

Se a única maneira ou a maneira mais fácil é um banco de dados, eu prefiro usar o Access. Se assim for, não o usuário da necessidade programa Access instalado para o meu programa para ser executado em seu computador? E se eu ir com outro banco de dados?

P.S.

Eu esqueci de mencionar, eu prefiro o usuário não será capaz de acessar esse arquivo e ler o conteúdo facilmente. arquivo de texto sem criptografia seria fácil de abrir. Qualquer maneira de criptografar isso? Além disso, se eu usar um delimitador como ':', então isso significa que o usuário não pode usar esse personagem. Então alguma outra maneira?

Obrigado!

Foi útil?

Solução

Faça o seu serializado dados de usuário, adicionando a palavra-chave:

[Serializable]

acima de sua estrutura de dados. Quando você carrega a caixa de diálogo, carregar sua estrutura serializada do disco, e quando você deixar o diálogo, senão a estrutura de dados.

Do ponto de vista de estilo, você provavelmente não deve ter os dados de diálogo Alterar caixa até que a caixa de diálogo é fechada (se é modal).

Para salvar:

    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 carregar:

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

Você também pode usar 'usando' em um córrego, mas este código é bastante simples, eu acho. Isso também significa que você pode adicionar mais itens em MyObject.

Edit: Para criptografia, você pode adicionar em AES ou algo similar. Isso pode ser um exagero para você, e salvar o arquivo como binário pode torná-lo legível por algo como bloco de notas, mas não facilmente editáveis. Aqui está uma longa explicação sobre a criptografia real:

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

Outras dicas

Sql Compact Edition iria esconder que os dados sejam facilmente acessível (e sua livre). Você também pode senha proteger um banco de dados CE. banco de dados SQL CE A está contida completamente em um arquivo .sdf, como Access, assim você pode copiar o arquivo .sdf ao redor e não precisa se preocupar com a conectividade de rede, etc.

Se o seu aplicativo é apenas para ser usado por uma única pessoa, então, simplesmente armazenar seus dados em um arquivo XML (iria dar-lhe alguma estrutura)

Se o seu aplicativo será usado por várias pessoas e os dados compartilhados entre eles, em seguida, um banco de dados é a sua melhor opção. Se você usar um banco de dados, então sim, você precisará ter um banco de dados instalado no seu computador usuários, embora seja possível fazer isso transparantly para o usuário, para que você é melhor fora com um banco de dados embutido, algo como MySQL seria sua melhor aposta.

(EDIT: o banco de dados realmente não tem que ser no computador do usuário, mas ele precisa ser capaz de vê-lo de seu coputer)

Se é muito simples, então você pode colocá-lo em um arquivo de texto simples. Para dados mais estruturados você poderia considerar armazená-lo como um arquivo CSV e analisá-lo ou criar um XmlDocument e salvando que para o disco.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top