C++ 使用cocos2dxv3.2中的现有数据库

C++ 使用cocos2dxv3.2中的现有数据库,c++,cocos2d-x,C++,Cocos2d X,我有一块石头。我有一个exist数据库文件(db.db3) 我如何检查Android和iOS设备中是否存在它 我只是想打开来读取数据库,而不是创建一个新的数据库,我该怎么做?当我学习本教程时,它只是创建新数据库,而不是打开exist数据库。另外,如何在Android和iOS中导入sqlite文件 此时,我将数据库放在Resources/db/db.db3中。在我使用下面的代码打开数据库后,我不知道如何在Android和iOS中将此数据库复制到手机数据中,因此它总是创建一个新数据库 bool DB

我有一块石头。我有一个exist数据库文件(db.db3)

  • 我如何检查Android和iOS设备中是否存在它

  • 我只是想打开来读取数据库,而不是创建一个新的数据库,我该怎么做?当我学习本教程时,它只是创建新数据库,而不是打开exist数据库。另外,如何在Android和iOS中导入sqlite文件

  • 此时,我将数据库放在Resources/db/db.db3中。在我使用下面的代码打开数据库后,我不知道如何在Android和iOS中将此数据库复制到手机数据中,因此它总是创建一个新数据库

    bool DBProcess::OpenDB(char *path)
    {
        sqlite3 *db;
        char *zErrMsg = 0;
        int rc;
        std::string dbPath = CCFileUtils::sharedFileUtils()->getWritablePath();
    
        dbPath.append(path);
        rc = sqlite3_open(dbPath.c_str(), &db);
    
        if( rc )
        {
          CCLOG("Can't open database: %s\n", sqlite3_errmsg(db));
          return false;
        }
        else
        {
          CCLOG("Opened database successfully\n");
        }
        sqlite3_close(db);
    
        return true;
    }
    

    sqlite3\u open
    将创建它,如果它不在那里。无需将其复制到设备。如果它不存在,它就会被创建。然后执行SQL并创建应用程序运行所需的表、行等。不确定为什么要将
    path
    追加到
    dbPath
    getWritablePath()
    将已将您置于需要的位置。只需添加db的名称,“我有一块石头”。。。我有纸,我赢了。万岁!!:)如果你有纸,我有剪刀!:-)如果我们玩摇滚、纸牌、剪刀、蜥蜴、斯波克怎么办?在这种情况下,谢尔顿默认获胜。@GameDeveloper:这是我的第一步。使用代码独立创建sqlite文件(有人这样做)。我刚得到一份最终文件。2.我必须在游戏中使用这个文件,我不知道把这个文件放在哪里阅读。正如您所提到的,我总是有一个可用的文件可以读取,但我不知道将它放在参考资料中的什么位置。此时,我将db.db3放在Resources/db/文件夹中,当我运行游戏时,设备找不到该文件,因此它总是创建一个新文件:(