代码之家  ›  专栏  ›  技术社区  ›  Justin Bennett

存储来自C应用程序的数据

  •  15
  • Justin Bennett  · 技术社区  · 18 年前

    我最近开始学习一些C并写了一个Yahtzee克隆体。我的下一步(现在游戏逻辑已经就位并且功能正常了)是集成一些在所有游戏中保持统计的方法。

    我的问题是,如何存储这些信息?我的第一个想法是使用一个数据库,我觉得这是我会得到的答案…如果是这样的话,你能给我指出一个很好的资源来创建和访问C应用程序中的数据库吗?


    存储在一个XML文件中对我来说实际上更有意义,但我认为如果我建议将其拆分;)。我习惯于构建Web应用程序,对于这些应用程序,文本文件通常是不受欢迎的。

    那么,使用一个XML文件,我应该查看哪些类可以方便地进行操作?

    9 回复  |  直到 14 年前
        1
  •  16
  •   Scott Stanchfield    18 年前

    这里有一个想法:使用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();
    }
    
        2
  •  13
  •   Greg Hurlman    18 年前

    对于这样的事情,一个数据库可能是杀伤力太大了——首先将您的信息存储在一个XML文档(或者一系列XML文档,如果有很多数据的话)。您得到了所有漂亮的xcopy部署工具,仍然可以使用linq,如果您稍后决定真正需要执行关系查询逻辑,那么它将是到数据库的平滑过渡。

        3
  •  7
  •   Community Mohan Dere    9 年前

    一个数据库可能是杀伤力太大了——你有没有想过把分数存储在一个文件中?

    如果您决定使用数据库,您可以考虑 SQLite ,您可以像分发文件一样分发。有一个开源的.NET提供程序- System.Data.SQLite -这包括你开始所需要的一切。

    在.NET中访问和读取数据库非常容易-请看 this question 用于示例代码。

        4
  •  4
  •   Jon Dewees    18 年前

    SQL Express FromMS是他们的SQL Server数据库的一个伟大的免费、轻量级版本。如果你走DB路线,你可以试试。

    或者,您可以简单地在应用程序中创建数据集并将其序列化为XML,或者使用类似于新生成的 Entity Framework 与.NET 3.5 SP1一起提供的

        5
  •  3
  •   TheSmurf    18 年前

    我不知道数据库是否一定是你想要的。对于这样一个简单的游戏来说,存储统计数据可能会有点过头了。数据库很好;但是您不应该在任何情况下都自动使用数据库(我假设这是一个客户端应用程序,而不是在线游戏)。

    就个人而言,对于只存在于用户计算机上的游戏,我只需将统计信息存储在一个文件中(XML或二进制-选择取决于您是否希望它是人类可读的)。

        6
  •  2
  •   Will    18 年前

    我建议将您的数据保存在简单的POCO中,并将它们序列化为XML或二进制文件,就像上面所说的那样。

    如果你对数据库感兴趣,我建议 Sql Server Compact Edition 或 VistaDB . 两者都在您的应用程序内部托管。

        7
  •  1
  •   Dale Ragan    18 年前

    我建议只使用数据库。我建议使用LINQ或ORM工具与数据库交互。为了学习Linq,我会看一下Scott Guthrie的帖子。我想一共有9个。我链接了下面的第1部分。如果你想使用ORM工具,比如nhibernate,那么我建议你去看看nhibernate的夏季屏幕。他们是一个非常好的学习资源,为NHibernate。

    我不同意使用XML。有了大量数据的报告统计信息,使用关系数据库是无法击败的。是的,XML是轻量级的,但是对于轻量级关系数据库也有很多选择,除了全面的基于服务的实现。(即 SQL Server Compact , SQLite 等

        8
  •  1
  •   Tim Cooper    14 年前

    您可以使用 System::Xml 命名空间或 System::Data 命名空间。第一个提供了原始XML,第二个提供了一个方便的XML包装器。

        9
  •  1
  •   Tim Cooper    14 年前

    对于这种情况, [Serializable] 一个模型良好的属性 Stats 类和 XmlSerializer 我想这是我的出路。