WinForms - какой самый простой подход для сохранения некоторых данных? - PullRequest
8 голосов
/ 19 сентября 2009

Просто создаю мое первое приложение WinForms.

Вопрос - Какой самый простой / лучший подход для сохранения некоторых данных между использованием приложения (например, список URL со статусом и датой / временем в данном случае)? Я не вижу необходимости в базе данных.

Например * Просто хранить в текстовом файле? * Или просто хранить в XML-файле в DotNet * Как насчет реестра Windows - это вообще следует избегать? Совместимо ли оно со всеми версиями, включая Windows 7? * База данных - вероятно, здесь перебор * Может быть, широко используемая библиотека?

Спасибо

Ответы [ 6 ]

9 голосов
/ 19 сентября 2009

Взгляните на Настройки вашего проекта (щелкните правой кнопкой мыши проект в обозревателе решений> Свойства> вкладка Настройки), вы можете определить количество переменных, которые сохраняются при каждом использовании программы для каждого пользователь, как имя пользователя, время последнего обновления, прокси-сервер, что-нибудь в этом роде. Сами параметры сериализуются в XML и находятся в папке «Параметры приложения» для каждого пользователя, но вы также можете указать параметры по умолчанию или параметры приложения.

Затем вы можете использовать такие настройки:

MyNamespace.Properties.Settings.Default.MySetting

Более подробную информацию о файлах настроек можно найти @ MSDN или Код проекта

Это здорово, если вам нужно хранить несколько переменных между сессиями. Если вам нужно сохранить больший объем данных, посмотрите либо один из вариантов базы данных, предложенный в других ответах, либо сериализация .

5 голосов
/ 19 сентября 2009

Если вам действительно требуется постоянное хранение данных и нехватка хранилища приложений, вы можете использовать sqlite или sql server compact (оба автономных), однако в вашем случае я думаю, что чтение / запись в xml-файл в общей папке данных приложения подойдет только хорошо и невероятно легко.

4 голосов
/ 19 сентября 2009

Сохранение в XML очень просто в .NET, особенно если вы действительно просто сохраняете URL и временную метку. Вы можете создать собственный класс для хранения данных ... во время выполнения манипулировать экземплярами этого класса в своем приложении.

Когда пришло время для сохранения, сериализовать объект (ы) в XML ... когда приложение должно восстановить данные позже, просто десериализовать. MSDN имеет простое прохождение .

Стоит отметить, как это сделал Квинтин, что использование SQL Server Compact или какой-либо другой облегченной базы данных также может быть хорошей идеей. XML быстр и прост - но если вам нужны люди для обмена данными или вам нужно что-то более гибкое, чем простая сериализация, вам лучше использовать базу данных.

0 голосов
/ 27 марта 2017

Зависит от того, сколько данных вы хотите сохранить, но если это всего лишь небольшой набор значений (а не набор объектов или записей), то также посмотрите на изолированное хранилище:

https://msdn.microsoft.com/en-us/library/3ak841sy(v=vs.110).aspx

0 голосов
/ 20 сентября 2009

Вы должны проверить db4o . Эта легковесная объектная база данных с открытым исходным кодом для объектов .NET и Java очень полезна, когда вам просто нужно простое сохранение. Это более способный к запросу, чем текстовый файл, и не такой тяжелый, как СУБД. Он включен в виде библиотеки и сохраняется в файле, поэтому нет никаких внешних вызовов.

Его можно добавить в ваш проект, обратившись к библиотеке db4o (скачать здесь ). Вы даете ему путь к файлу, который вы хотите сохранить объекты, и он обрабатывает все остальное. Затем вы можете создавать классы для инкапсуляции вашей информации и просто сохранять их экземпляры в файле через db4o. Вы можете запросить их позже через очень простой интерфейс запроса.

0 голосов
/ 19 сентября 2009

Отредактировано, потому что мой первый пост был чист как грязь

Лично мне нравится хранить данные в базе данных, если пользователи обмениваются данными.

Для однопользовательских данных, не являющихся общими, следующие опции довольно просты.

Если ваши данные хранятся в DataSet внутри, я бы предложил использовать DataSet.WriteXml и DataSet.ReadXml для локального хранения.

В противном случае простой текстовый файл будет проще, чем вы предлагаете. Однако если данные будут более сложными, то написание XML-документа будет наиболее подходящим.

Вы также можете посмотреть сериализацию:

http://msdn.microsoft.com/en-us/library/7ay27kt9(VS.85).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...