Java中的数据存储

Java中的数据存储,java,database,Java,Database,我正在用Java做一个小的编程练习,让我在放学前重新开始工作。我的程序将与视频游戏(TeamFortress 2)相关,因此我需要存储大量武器的数据 我目前的模型是,我对每种武器都有一个类(例如,侦察兵初级或士兵次级),我将根据选择的具体武器修改每个类中的变量。例如,如果Scout_Primary是“散射枪”,我将相应地修改其基础伤害和重新加载速度 如果您熟悉TF2,您将知道有大量武器。如何在我的程序中存储所有武器的统计数据?我不想写包含类别中每种武器的统计数据的巨型开关语句。我非常渴望更多地使

我正在用Java做一个小的编程练习,让我在放学前重新开始工作。我的程序将与视频游戏(TeamFortress 2)相关,因此我需要存储大量武器的数据

我目前的模型是,我对每种武器都有一个类(例如,侦察兵初级或士兵次级),我将根据选择的具体武器修改每个类中的变量。例如,如果Scout_Primary是“散射枪”,我将相应地修改其基础伤害和重新加载速度

如果您熟悉TF2,您将知道有大量武器。如何在我的程序中存储所有武器的统计数据?我不想写包含类别中每种武器的统计数据的巨型开关语句。我非常渴望更多地使用SQL(我有一些使用SQL的经验,但不太多,我以前使用过JDBC)

有没有可能创建一个数据库并将其与程序本身打包,这样我就不必担心托管问题?我唯一的经验就是使用远程数据库

我想做的是拥有本地数据库,执行select并将数据传递给构造函数。提前谢谢


编辑:我一直在看德比,这是正确的方向吗?

为什么每个武器都需要不同的等级?我想创建一个类武器会是更好的选择,或者更确切地说是一个抽象类,可以通过各种其他类型的武器进行扩展。将武器存储在
集合中如何(列表、地图、设置取决于您要执行的操作类型)。如果你的目标是存储游戏统计数据并将游戏作为基于web的应用程序启动,建议使用数据库

无论你选择什么,你都很可能需要使用某种数据库来存放武器。SQLite是最小且最容易实现的工具之一,尽管它需要一些SQL的背景知识

您还可以将所有武器存储在一个用JSON或XML格式化的纯文本文件中。。。我会选择JSON,因为它会减少您的输入,但XML也很容易做到(而且我很确定已经有了XML解析器)。然而,JSON更容易实现,即使您仍然需要从JSON.org下载源代码

{
"weapons": [
    { "name":"Scattergun" , "damage":"5" },
    { "name":"Flamethrower" , "damage":"8" , "pyro":"yes" }
]
}

如您所见,我对TF2没有任何线索。

是的,SQL可能适用于此。您应该了解一下,它的主要优点是它是轻量级的,并且非常容易嵌入到Java应用程序中。你可以完全按照你所说的去做——在本地使用它


唯一的问题是将实际数据与应用程序捆绑在一起。我建议您从一个简单的文件开始,可能是JSON或XML编码的,甚至只是CSV——基本上是您选择的任何文件。然后,当程序启动时,检查数据库是否存在。如果没有,则创建它,读取文件,并将文件中的数据存储到数据库中。然后,您就可以使用SELECT语句或其他任何您想要的语句进行查询了。

我建议您使用数据库,尤其是因为您提到有使用JDBC的经验

如果您不想担心在服务器上安装MySQL或Postgres之类的数据库引擎,您可以使用,它可以与Java应用程序一起分发


H2是用Java编写的,有一个JDBCAPI

我认为一件简单的职业武器可以做到这一点:

class Weapon {
  private WeaponType weaponType;
  private ClassType classType;
  private int damage;
  ...
}

enum WeaponType {
  PRIMARY, SECONDARY, ..
}

enum ClassType {
  SCOUT, SOLDIER, ...
}

您还可以使用类似的库将其映射到json或从json映射。如果您必须手动不时更新值,那么Json比数据库简单得多。

如果武器已修复,则不需要数据库。只需将它们存储在文件中,作为原始二进制文件或纯文本-您的选择。这是一个您可能感兴趣的数据库我同意“只需将它们存储在纯文本文件中”的说法,除非您必须决定哪些行代表名称,哪些行代表损坏,哪些行代表说明,等等。。。即使是对于这么简单的事情,坚持下去也是一种折磨!根据复杂性的不同,您可能根本不需要数据库。看看XML或YAML之类的序列化标记。好吧,json或其他标准格式如何,我想我在本科期间实现的.NET游戏中使用了XML,但那是在我学习json之前。我从未使用过json。不过我确实听说过很多,看来是时候读点书了。如果你知道任何好的教程,那就太好了。同时我会在谷歌上搜索。这很简单,只是一种将结构化数据格式化为字符串的方法。出于这个目的,这可能有些过分,但是有很多很好的库可以对其进行编码/解码。