在cocos2d-x中一般使用sqlite的c语言绑定,直接下载其源码,下载地址:http://www.sqlite.org/download.html,下载后解压,如下
新建一个项目sqliteTest, 将下载后的sqlite-amalgamation-3070401(这个是我解压后得到的文件夹)文件夹复制到刚才新建的项目class文件夹里面,然后
右击sqliteTest项目->属性->配置属性->C/C++->常规->附加包含目录->编辑,打开“附加包含目录”对话框进行修改,然后保存配置,截图如下:
截图中的列表框中的最后一行就是我刚才添加的一个目录。
下一步,将开始下载的源文件添加到项目中去,右击项目->添加->现有项,全选那四个源文件,然后添加,
然后,测试一下是否配置成功,直接上源码了:
1 #include "HelloWorldScene.h" 2 #include "sqlite3.h" 3 4 using namespace cocos2d; 5 6 CCScene* HelloWorld::scene() 7 { 8 CCScene * scene = NULL; 9 do 10 { 11 // 'scene' is an autorelease object 12 scene = CCScene::create(); 13 CC_BREAK_IF(! scene); 14 15 // 'layer' is an autorelease object 16 HelloWorld *layer = HelloWorld::create(); 17 CC_BREAK_IF(! layer); 18 19 // add layer as a child to scene 20 scene->addChild(layer); 21 } while (0); 22 23 // return the scene 24 return scene; 25 } 26 27 // on "init" you need to initialize your instance 28 bool HelloWorld::init() 29 { 30 bool bRet = false; 31 do 32 { 33 ////////////////////////////////////////////////////////////////////////// 34 // super init first 35 ////////////////////////////////////////////////////////////////////////// 36 37 CC_BREAK_IF(! CCLayer::init()); 38 39 sqlite3* pDB = NULL; //数据库指针4 40 41 char *errMsg; //错误信息 42 std::string sqlStr; //sql指令 43 int result; //sql_exec返回指令 44 45 result = sqlite3_open("news.db", &pDB); 46 47 if (result != SQLITE_OK) 48 { 49 CCLOG("fali errCode:%d errMsg:%s", result, errMsg); 50 } 51 52 result = sqlite3_exec(pDB, "create table Tabel_1(ID integer primary key autoincrement, name nvarchar(32), class nvarchar(32))", NULL, NULL, &errMsg); 53 if (result != SQLITE_OK) 54 { 55 CCLOG("fail code:%d errMsg:%s", result, errMsg); 56 } 57 58 //insert data 59 sqlStr = "insert into Tabel_1(name, class) values ('money', 'world')"; 60 result = sqlite3_exec(pDB, sqlStr.c_str(), NULL, NULL, &errMsg); 61 if (result != SQLITE_OK) 62 { 63 CCLOG("fail errCode:%d errMsg:%s", result, errMsg); 64 } 65 66 67 68 sqlite3_close(pDB); 69 70 71 bRet = true; 72 } while (0); 73 74 return bRet; 75 } 76 77 void HelloWorld::menuCloseCallback(CCObject* pSender) 78 { 79 // "close" menu item clicked 80 CCDirector::sharedDirector()->end(); 81 }
将项目设为启动项,然后运行(已经测试,可以使用),然后打开项目下面的Resource文件夹查看运行结果,数据库文件news.db成功生成:
如果想打开这个文件查看一下,就得下载SQLite Database Browser,下载地址:http://sourceforge.net/projects/sqlitebrowser/
用这个工具打开news.db,截图如下:
ok,记录也有了。
备注:我的db里面的ID为2是因为之前插入数据错了,然后把记录删掉后再次插入的,嘿嘿