#c# #visual-studio-2015
#c# #winforms #сохранение
Вопрос:
Просто создаю свое первое приложение WinForms.
Вопрос — Какой самый простой / лучший подход для сохранения некоторых данных между использованием приложения (например, список URL-адресов со статусом и датой / временем в данном случае)? Я не вижу никакой необходимости в базе данных.
Например * Проще всего просто сохранить в текстовый файл? * Или сохранение в XML-файл так же просто в DotNet * Как насчет реестра Windows — этого вообще следует избегать? Совместимо ли его использование во всех версиях, включая Windows 7 * База данных — возможно, здесь излишне * Возможно, широко используемая библиотека?
Спасибо
Ответ №1:
Взгляните на настройки вашего проекта (щелкните правой кнопкой мыши проект в обозревателе решений> Свойства> Вкладка Настройки), вы можете определить ряд переменных, которые сохраняются при использовании программы для каждого пользователя, например, имя пользователя, время последнего обновления, прокси-сервер и тому подобное. Сами настройки сериализуются в XML и хранятся в папке настроек приложения для каждого пользователя, но вы также можете указать настройки по умолчанию или для конкретного приложения.
Затем вы можете использовать следующие настройки:
MyNamespace.Properties.Settings.Default.MySetting
Более подробную информацию о файлах настроек можно найти в @ MSDN или в Code Project
Это здорово, если вам нужно всего лишь сохранить несколько переменных между сеансами. Если вам нужно сохранить больший объем данных, рассмотрите либо один из вариантов базы данных, предложенных в других ответах, либо сериализацию.
Ответ №2:
Если вам действительно нужна высокая настойчивость и отсутствие хранилища приложений, вы можете использовать sqlite или sql server compact (оба автономные), однако в вашем случае я думаю, что чтение / запись в XML-файл в общей папке данных приложения будет соответствовать вашим потребностям просто отлично и невероятно просто.
Ответ №3:
Сохранение в XML очень просто в .NET, особенно если вы просто сохраняете URL-адрес и временную метку. Вы можете создать пользовательский класс для хранения данных … во время выполнения манипулируйте экземплярами этого класса в своем приложении.
Когда придет время сохранять, сериализуйте объекты в XML … когда приложению потребуется восстановить данные позже, просто десериализуйте. MSDN имеет простое пошаговое руководство.
Стоит отметить, как это сделал Квинтин, что использование SQL Server Compact или какой-либо другой облегченной базы данных также может быть хорошей идеей. XML — это быстро и просто, но если вам нужно, чтобы люди обменивались данными, или вам нужно что-то более гибкое, чем простая сериализация, вам лучше с базой данных.
Комментарии:
1. КСТАТИ — SQL Server Compact потребует отдельной установки пользователем? Или вы могли бы эффективно, по-видимому, упаковать его развертывание как часть развертывания приложения по щелчку мыши?
Ответ №4:
Отредактировано, потому что мой первый пост был ясен, как грязь
Лично мне нравится хранить данные в базе данных, если пользователи обмениваются данными.
Для не совместно используемых однопользовательских данных все следующие параметры довольно просты.
Если ваши данные хранятся в наборе данных внутри, я бы предложил использовать DataSet .WriteXml и DataSet.ReadXml для локального хранения.
В противном случае обычный текстовый файл был бы проще всего для чего-то такого простого, как вы предложили. Однако, если данные будут более сложными, то наиболее подходящим будет написание Xml-документа.
Вы также можете изучить сериализацию:
http://msdn.microsoft.com/en-us/library/7ay27kt9 (ПРОТИВ 85).aspx
Ответ №5:
Вы должны проверить db4o. Эта легкая объектная база данных с открытым исходным кодом для .Объекты NET и Java очень полезны, когда вам просто нужно простое сохранение. Он более удобен для запросов, чем текстовый файл, и не такой тяжелый, как СУБД. Он включен в качестве библиотеки и сохраняется в файле, поэтому нет вызовов вне процесса.
Его можно добавить в ваш проект, обратившись к библиотеке db4o (скачать здесь). Вы указываете ему путь к файлу, в котором вы хотите сохранить объекты, а он обрабатывает все остальное. Затем вы можете создавать классы для инкапсуляции вашей информации и просто сохранять их экземпляры в файл через db4o. Вы можете запросить их позже через очень простой интерфейс запроса.
Комментарии:
1. Отличное спасибо. Является ли Db4o наиболее широко / популярным выбором, используемым в его категории?
2. Если по категории вы имеете в виду объектные базы данных C # / Java, то да, я так считаю. Однако, если вы имеете в виду хранение небольших примитивных данных из одного сеанса в другой, то наиболее широко используется использование настроек, пользовательского раздела ConfigurationSection или другого XML-файла. Если вы обнаружите, что вам нужно больше возможностей базы данных, но вы не хотите управлять СУБД, стоит изучить базу данных объектов.
3. кажется, db4o требует лицензии, если используется в коммерческих целях? сайт, похоже, предполагает, что вам нужно запросить цитату (цифры не указаны)…
4. db4o требует лицензирования для конкретных коммерческих целей. Однако бесплатную лицензию можно получить и использовать в соответствии с GNU GPL, версия 2. Вам нужно будет рассмотреть вашу цель и посмотреть, разрешено ли ваше использование в соответствии с этим лицензионным соглашением. db4o.com/about/company/legalpolicies/gpl.aspx
Ответ №6:
Зависит от того, сколько данных вы хотите сохранить, но если это всего лишь небольшой набор значений (а не набор объектов или записей), тогда также обратите внимание на изолированное хранилище:
https://msdn.microsoft.com/en-us/library/3ak841sy (v = против 110).aspx