C# Хранение введенных пользователем данных

StackOverflow https://stackoverflow.com/questions/437604

  •  22-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь написать программу на C#, в которой, когда пользователь вводит некоторые данные в текстовое поле и нажимает кнопку «Сохранить», информация сохраняется в каком-то файле, который при следующем открытии программы, информация загружается автоматически.

Я использую Visual C# Express.Как лучше всего сделать это, не требуя какой-либо базы данных, такой как MySQL, MSSQL или Access?

Если единственный или самый простой способ — это база данных, я бы предпочел использовать Access.Если да, то нужен ли пользователю программы Access, чтобы моя программа могла работать на его компьютере?Что если я выберу другую базу данных?

п.с.

Я забыл упомянуть, я бы предпочел, чтобы пользователь не мог получить доступ к этому файлу и легко прочитать его содержимое.Текстовый файл без шифрования будет легко открыть.Есть ли способ зашифровать это?Кроме того, если я использую разделитель типа «:», это означает, что пользователь не может использовать этот символ.Так есть ли другой способ?

Спасибо!

Это было полезно?

Решение

Сделайте ваши пользовательские данные сериализуемыми, добавив ключевое слово:

[Serializable]

над вашей структурой данных.При загрузке диалогового окна загрузите сериализованную структуру с диска, а при выходе из диалогового окна сохраните структуру данных.

С точки зрения стиля, вам, вероятно, не следует изменять данные диалогового окна до тех пор, пока диалоговое окно не будет закрыто (если оно модальное).

Сохранить:

    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;

    }

Загружать:

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

Вы также можете использовать «использование» в потоке, но я думаю, что этот код довольно прост.Это также означает, что вы можете добавлять больше элементов в MyObject.

Редактировать:Для шифрования вы можете добавить AES или что-то подобное.Для вас это может быть излишним, и сохранение файла в двоичном виде может сделать его доступным для чтения с помощью чего-то вроде блокнота, но его будет сложно редактировать.Вот подробное объяснение настоящего шифрования:

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

Другие советы

Компактная версия SQL скроет данные от легкого доступа (и бесплатно).Вы также можете защитить паролем базу данных CE.База данных SQL CE полностью содержится в файле .SDF, например Access, поэтому вы можете копировать файл .sdf и не беспокоиться о сетевом подключении и т. д.

Если ваше приложение будет использоваться только одним человеком, просто сохраните ваши данные в файле (XML даст вам некоторую структуру).

Если ваше приложение будет использоваться несколькими людьми и данные будут совместно использоваться ими, то база данных — лучший вариант.Если вы используете базу данных, то да, вам нужно будет установить базу данных на компьютер вашего пользователя, хотя это можно сделать прозрачно для вашего пользователя, для этого вам лучше всего использовать встраиваемую базу данных, лучше всего подойдет что-то вроде MySQL. делать ставку.

(РЕДАКТИРОВАТЬ:база данных на самом деле не обязательно должна находиться на компьютере пользователя, но он должен иметь возможность видеть ее со своего компьютера)

Если это очень просто, вы можете поместить его в обычный текстовый файл.Для более структурированных данных вы можете сохранить их в формате CSV и проанализировать их или создать XmlDocument и сохранить его на диск.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top