Ios 将数据库(如sqlite)与cocos2d-x一起使用
我开始在iphone上构建一个游戏应用程序。我正在使用cocos2d-x游戏引擎,因为从那里很容易移植到android。此外,编码是在C++中,我非常熟悉。我想知道是否有一种方法可以将任何数据库与cocos2d-x一起使用。虽然sqlite是首选,但不是强制性的。我将有大约1/2MB的数据在数据库中。因此,是的,我也考虑过保留/使用内存中的数据库,但我希望我的读/写查询能够节省时间Ios 将数据库(如sqlite)与cocos2d-x一起使用,ios,sqlite,xcode4,cocos2d-x,Ios,Sqlite,Xcode4,Cocos2d X,我开始在iphone上构建一个游戏应用程序。我正在使用cocos2d-x游戏引擎,因为从那里很容易移植到android。此外,编码是在C++中,我非常熟悉。我想知道是否有一种方法可以将任何数据库与cocos2d-x一起使用。虽然sqlite是首选,但不是强制性的。我将有大约1/2MB的数据在数据库中。因此,是的,我也考虑过保留/使用内存中的数据库,但我希望我的读/写查询能够节省时间 我查阅了一些博客,这表明我可能需要使用SQLite的C++包装器。问题是,对于一个独立的C++代码,我可以设置环境
我查阅了一些博客,这表明我可能需要使用SQLite的C++包装器。问题是,对于一个独立的C++代码,我可以设置环境,但是我如何将这个代码集成到XCODEL(在Mac OS中),使用SQCOLITE COCOX2D X.< /P> < P>原始帖子在
我发现将sqlite包含到cocos2dx游戏中是一种最简单的方法 即从SqLeTe3C++ API下载源代码,并将SqLeTe3.c添加到Android。 然后将这些代码编译为cocos2dx代码 并在需要时在代码中包含sqlite.h 对于数据库上的操作,以下是我的示例代码:sqlite3 *pDB = NULL;
char* errMsg = NULL;
string sqlstr;
int result;
string dbPath = CCFileUtils::getWriteablePath();
dbPath.append("Settings.db");
result = sqlite3_open(dbPath.c_str(),&pDB);
if (result != SQLITE_OK)
CCLOG("OPENING WRONG, %d, MSG:%s",result,errMsg);
bool isExisted_;
sqlstr = "select count(type) from sqlite_master where type='table' and name='YourTableName'";
result = sqlite3_exec(pDB, sqlstr.c_str(), isExisted, &isExisted_, &errMsg);
if(result != SQLITE_OK)
CCLOG("check exist fail %d Msg: %s", result, errMsg);
result = sqlite3_exec(pDB, "create table YourTableName(ID INTEGER primary key autoincrement, name varchar(32), type INT, posX INT, posY INT, isUnlock INT)",NULL,NULL,&errMsg);
if(result != SQLITE_OK)
CCLOG("CREATE TABLE FAIL %d, Msg: %s",result,errMsg);
sqlite3_close(pDB);
我认为最好的办法是:
- 打开文件,您将获得您的文件数据。 例如,您的sqlite文件:)
- 用于获取可以写入的目录
- 将数据写入上一个目录,例如
- 现在,您可以使用api的源代码访问数据库
我写了一篇关于在xcode中逐步将sqlite集成到cocos2d-x游戏中的博客。你可以看到这个
你说“SQLite C++ + API”,但是我在SQLite站点上找到了任何反映了我的文件,而我从它们得到的下载文件是C(因此,C)而不是C++。是我遗漏了什么,还是他们中的一个same@owengerig这是我的问题。实际上它是C,C++中没有任何问题。SqLITE已经集成在Android和iOS中,你只需要将它引用到你的项目中。@ CaleCs在COCOS2D-X Bro中有点不同。如果你想使用C++和COCOS2DX框架来实现SQLite集成,而不需要进入原生IOS(Objc)和Android(java)代码,那么这个博客将有帮助。
CCFileUtils* fileUtils = CCFileUtils::sharedFileUtils();
unsigned long size = 5;
unsigned char* smth;
smth = fileUtils->getFileData("koalalocker","r",&size);
printf("Size: %lu\n\n",size);
fflush(stdout);
if(cos == NULL)
{
LOG("can't open");
return;
}
else
LOG("I have something!");
string path = fileUtils->getWriteablePath();
path += "test_OUT";
char buffer[300];
sprintf(buffer,"PATH: %s\n",path.c_str());
LOG(buffer);
std::fstream outfile(path.c_str(),std::fstream::out);
outfile.write((const char*)smth,size-1);
outfile.close();
LOGN("Size:",size);
LOG((const char*)smth);