Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将数据库(如sqlite)与cocos2d-x一起使用_Ios_Sqlite_Xcode4_Cocos2d X - Fatal编程技术网

Ios 将数据库(如sqlite)与cocos2d-x一起使用

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++代码,我可以设置环境

我开始在iphone上构建一个游戏应用程序。我正在使用cocos2d-x游戏引擎,因为从那里很容易移植到android。此外,编码是在C++中,我非常熟悉。我想知道是否有一种方法可以将任何数据库与cocos2d-x一起使用。虽然sqlite是首选,但不是强制性的。我将有大约1/2MB的数据在数据库中。因此,是的,我也考虑过保留/使用内存中的数据库,但我希望我的读/写查询能够节省时间

我查阅了一些博客,这表明我可能需要使用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);