我正在使用 cocos2d-x 在 android 中创建一个需要使用数据库的应用程序。
我使用了以下在搜索论坛时发现的方法在 cocos2d-x 中使用 SQLITE:
- 使用 CCFileUtils::getFileData() 将 sqlite 文件读入 char*
- 使用标准 ofstrem 将 char* 写入 CCFileUtils::getWriteablePath() 中的文件(在 android 中为 /data/data/xxx/xx)
- 比您可以在步骤 2 中使用 sqlite3_open() 打开文件
我遇到的问题是,当我插入数据库时,原始文件没有被更新,即步骤 1 中的 sqlite 文件没有被更新,而步骤 2 中的文件是。现在,当应用程序重新启动时,第 2 步中文件中的数据将被覆盖,因此会丢失所有插入数据。
这是我的代码:
string dbPath = CCFileUtils::sharedFileUtils()->getWritablePath();
dbPath.append("DischargedNew.mp3");
unsigned long tmpSize;
unsigned char *xmlData = CCFileUtils::sharedFileUtils()->getFileData("Discharged.mp3", "rb", &tmpSize);
FILE *fp = fopen(dbPath.c_str(), "wb");
fwrite(xmlData, tmpSize, 1, fp);
fclose(fp);
if(result = db->open((char*) dbPath.c_str()))
{
CCLog("DB Opened");
db->query("INSERT INTO USERS (Name, Username, Email) VALUES ('Test Test', 'T', 'test@test.com');");
}
else
{
CCLog("OPENING WRONG, %d, MSG:%s", result, db->getError().c_str());
}
db->close();