Хранить данные из приложения C #

Я недавно начал изучать C # и написал клон Yahtzee. Мой следующий шаг (теперь, когда игровая логика установлена ​​и функционирует правильно), - это интегрировать некоторый метод ведения статистики во все сыгранные игры.

У меня такой вопрос: как мне хранить эту информацию? Моей первой мыслью было бы использовать базу данных, и у меня было ощущение, что ответ я получу ... если это так, можете ли вы указать мне хороший ресурс для создания и доступа к базе данных из приложения C #?


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

Итак, в отношении XML-файла, какие классы мне следует рассмотреть, чтобы можно было легко манипулировать ими?

21.08.2008 14:24:25
9 ОТВЕТОВ
РЕШЕНИЕ

Вот одна идея: использовать сериализацию Xml. Создайте свою структуру данных GameStats и при необходимости используйте атрибуты Xml, чтобы влиять на схему, как вам нравится. Мне нравится использовать этот метод для небольших наборов данных, потому что он быстрый и простой, и все, что мне нужно сделать, это спроектировать и управлять структурой данных.


using (FileStream fs = new FileStream(....))
{
    // Read in stats
    XmlSerializer xs = new XmlSerializer(typeof(GameStats));
    GameStats stats = (GameStats)xs.Deserialize(fs);

    // Manipulate stats here ...

    // Write out game stats
    XmlSerializer xs = new XmlSerializer(typeof(GameStats));
    xs.Serialize(fs, stats);

    fs.Close();
}
17
21.08.2008 14:42:36

База данных может быть излишней - вы думали о том, чтобы просто сохранить результаты в файле?

Если вы решили использовать базу данных, вы можете рассмотреть SQLite , который вы можете распространять как файл. Существует поставщик .NET с открытым исходным кодом - System.Data.SQLite - который включает в себя все, что вам нужно для начала.

Доступ и чтение из базы данных в .NET довольно просты - посмотрите на этот вопрос для примера кода.

7
23.05.2017 12:17:02

База данных, вероятно, была бы излишней для чего-то подобного - начните с хранения вашей информации в XML-документе (или серии XML-документов, если данных много). Вы получаете все эти изящные средства развертывания XCopy, вы все еще можете использовать LINQ, и это будет плавный переход к базе данных, если вы позже решите, что вам действительно нужна производительная логика реляционных запросов.

13
21.08.2008 14:31:47

Я не знаю, нужна ли вам база данных. Это может быть излишним для хранения статистики для такой простой игры. Базы данных хороши; но вы не должны автоматически использовать его в каждой ситуации (я предполагаю, что это клиентское приложение, а не онлайн-игра).

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

3
21.08.2008 14:32:19

SQL Express от MS - отличная бесплатная облегченная версия базы данных SQL Server. Вы можете попробовать это, если вы идете по маршруту БД.

В качестве альтернативы вы можете просто создать наборы данных в приложении и сериализовать их в XML или использовать что-то вроде недавно созданной Entity Framework , поставляемой с .NET 3.5 SP1.

4
21.08.2008 14:34:15

Вы можете использовать System::Xmlпространство имен или System::Dataпространство имен. Первый дает вам необработанный XML, второй - удобную оболочку для XML.

1
3.07.2012 13:20:51

Я бы порекомендовал просто использовать базу данных. Я бы порекомендовал использовать LINQ или инструмент ORM для взаимодействия с базой данных. Для изучения LINQ я бы посмотрел посты Скотта Гатри. Я думаю, что их 9 вместе. Я связал часть 1 ниже. Если вы хотите использовать инструмент ORM, скажем, nhibernate, то я бы порекомендовал посмотреть скриншоты Summer of nHibernate. Они действительно хороший учебный ресурс для nhibernate.

Я не согласен с использованием XML. Имея статистику по большому количеству данных, вы не сможете справиться с использованием реляционной базы данных. Да, XML является легковесным, но есть много вариантов и для легких реляционных баз данных, помимо того, что идет с полноценной сервисной реализацией. (т. е. SQL Server Compact , SQLite и т. д.)

1
21.08.2008 14:47:24
Понятия не имею, почему за вас так сильно проголосовали. В этом случае я бы сам не пошел в базу данных (даже легковесную, которую вы описали), но ваша точка зрения верна, и однажды оригинальный постер мог добавить достаточно к своей статистике, чтобы сделать БД более удобной для использования опцией ( +1, чтобы попытаться осудить это)
Ray Hayes 25.09.2008 13:47:44

Я бы порекомендовал сохранять ваши данные в простых POCO и сериализовать их в xml или в двоичный файл, как это делал Брайан выше.

Если вам нужна база данных, я бы предложил Sql Server Compact Edition или VistaDB . Оба размещаются в вашем приложении inproc.

2
21.08.2008 14:49:24

Для этой ситуации, [Serializable]атрибут на хорошо смоделированном Statsклассе и XmlSerializerспособ, IMO.

1
3.07.2012 13:21:07