Cocos2d-x:SQLite

推荐:将NSDT场景编辑器加入你的3D工具链

3D工具集:NSDT简石数字孪生

SQLite

SQLite 是一个独立的 SQL 数据库引擎。这意味着没有服务器 涉及。SQLite 在游戏运行时运行,您编写代码进行连接 到数据库并操作其内容。这绝不是全面的 指南,事实上,我们涵盖了SQLite可以为您做的1%。请阅读他们的网站,了解有关SQLIte为开发人员提供的功能的更多详细信息。

开始。

为了使用SQLite,您必须下载它并将其添加到您的项目中。请 有关更多详细信息,请参阅 SQLite 下载页面。 出于我们的目的,您只需要项目中的sqlite.h和sqlite.c。 将这些文件添加到环境中,并确保它们是生成过程的一部分。

SQL 如何在游戏中工作?

现在你已经有了SQLite,你必须了解如何在应用中使用数据库。 工程。没有任何自动的好处,除非你编码它。没有向导 并且没有免费的功能。这是由您手工编码的,以满足您的特定要求 需要。一般来说,您需要评估以下内容:

您的数据库是否已经存在?

  • 是的?连接到它。
  • 不?创建它,可能使用创建表查询。然后连接到它。

是否已连接到数据库?

  • 是的?针对它发出查询以实现您的目标。
  • 不?连接到它,然后针对它发出查询以实现您的目标。

您需要根据玩家成就更新数据库吗?

  • 是的?运行插入/更新查询以更改数据库。
  • 不?可能选择查询足以使用数据库来驱动您的游戏 玩。

玩家完成您的游戏了吗?

  • 是的?确保在游戏存在时关闭数据库。未能这样做 可能会损坏您的数据库并使其无法使用。

基本数据库创建和操作

让我们介绍如何创建一个简单的数据库,连接到它,然后操作它。

创建简单数据库

为了使用您的数据库,它必须存在。SQLite是基于文件的。只是 创建一个新文件来容纳您的数据库就足够了。请注意,我们使用.db文件扩展名来帮助说明这确实是我们的数据库。它也是 了解数据库在玩家设备上的位置非常重要。当你 创建数据库 必须将其放置在设备允许玩家的位置 将数据写入。Cocos2d-x 通过名为 的文件系统 API 帮助简化此操作。下面是一个示例:getWriteablePath()

sqlite3* pdb;

pdb = NULL;

std::string dbPath = cocos2d::FileUtils::getInstance()->getWritablePath() + "mydatabase.db";

int result = sqlite3_open(dbPath.c_str(), &pdb);

if(result == SQLITE_OK)
  std::cout << "open database successful!" << std::endl;
else
  std::cout << "open database failed!" << std::endl;

打开数据库后,您现在可以使用它。

创建表

数据库使用表来存储数据。数据库中至少需要一个表。 需要注意的是,您必须知道表将包含哪些数据才能创建 它。如果以后需要,您可以随时使用 SQL alter table 命令 修改表结构。但是,这超出了本文档的范围。 创建一个简单的表:

int result = 0;
std::string sql;

sql = "create table " +
std::string("Master") +
std::string(" (id TEXT PRIMARY KEY, value INT);");

result = sqlite3_exec(pdb, sql.c_str(), NULL, NULL, NULL);

if(result == SQLITE_OK)
{
  // table created successfully
}
else
{
  // table was NOT created successfully
}

查询数据

当您想要从数据库中获取信息时,必须执行选择查询以 明白了。选择查询是只读查询。你不必担心 运行这些类型的查询时意外修改了游戏数据。示例选择查询;

std::string key = "Brown";

std::string sql = "SELECT NAME " +
std::string(" FROM ") +
std::string("Master") +
std::string(" WHERE id='") +
std::string(key.c_str()) +
std::string("' LIMIT 1;");

sqlite3_stmt* statement;

if (sqlite3_prepare_v2(&pdb, sql.c_str(), -1, &statement, 0) == SQLITE_OK)
{
  int result = 0;

  while(true)
  {
      result = sqlite3_step(statement);

      if(result == SQLITE_ROW)
      {
          // do something with the row.
      }
      else
      {
          break;
      }
  }
}

3D建模学习工作室 翻译整理,转载请注明出处!

上一篇:Cocos2d-x:图形性能优化 (mvrlink.com)

下一篇:Cocos2d-x:搭建开发环境 - Android 平台 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号