【Cocos2d-x游戏引擎开发笔记(20)】SQLite专题

来源:互联网 发布:软件架构名词解释 编辑:程序博客网 时间:2024/05/17 22:09

原创文章,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/8634967。


大家好很长一段时间没有跟新我的博客看到大家在我的博客里的留言,我很是欣慰。这次我给大家带来了cocos2d-x使用SQLite数据库的博文。


在cocos2d-x中,简单数据存储,可以使用CCUserDefault,大家可以看看我前一篇博文。至于大量,不规则的数据存储,则使用SQLite数据库。SQLite数据库的使用,请参考我的博文C++操作SQLite数据库,在此博文中,主要讲解怎么样使用C++来操作数据库的。SQLite数据库本来就是使用C语言来编写的,所以cocos2d-x使用SQLite也是得心应手。


其实cocos2d-x操作数据库在windows上的使用我早就解决了,主要是在android平台上的使用了。


先来看看代码怎么写,代码就是王道。


首先是要去SQLite官网下载SQLite的源代码。就是两个文件sqlite3.h和sqlite3.c,我在博文的最后会提供下载的。将这两个文件加入工程。

sqlite3 *pdb=NULL;std::string path=CCFileUtils::sharedFileUtils()->getWriteablePath()+"save.db3";std::string sql;int result;result=sqlite3_open(path.c_str(),&pdb);if(result!=SQLITE_OK)CCLog("open database failed,  number%d",result);

上面的代码就是创建SQLite数据库文件,注意:一定要提供文件的路径。

result=sqlite3_exec(pdb,"create table student(ID integer primary key autoincrement,name text,sex text)",NULL,NULL,NULL);if(result!=SQLITE_OK)CCLog("create table failed");

这是创建表的SQL语句。

sql="insert into student  values(1,'zhycheng','male')";result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);if(result!=SQLITE_OK)CCLog("insert data failed!");sql="insert into student  values(2,'liuyali','female')";result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);if(result!=SQLITE_OK)CCLog("insert data failed!");sql="insert into student  values(3,'zhy_cheng','male')";result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);if(result!=SQLITE_OK)CCLog("insert data failed!");
插入数据。


sql="delete from student where ID=1";result=sqlite3_exec(pdb,sql.c_str(), ,NULL,NULL);if(result!=SQLITE_OK)CCLog("delete data failed!");
删除数据。

char **re;int r,c;sqlite3_get_table(pdb,"select * from student",&re,&r,&c,NULL);CCLog("row is %d,column is %d",r,c);CCLabelTTF *liu=CCLabelTTF::create(re[2*c+1],"Arial",24);liu->setPosition(ccp(200,200));addChild(liu,1);CCLog(re[2*c+1]);sqlite3_free_table(re);sqlite3_close(pdb);

查询数据。

这里数据查出后,使用一个文本在屏幕上显示,这是为了在Android手机上看到效果。


最后要注意,在发布到Android手机上的时候一定要修改MK文件,该文件是proj.android/jin/Android.mk。添加对sqlite3.c的编译,改成如下:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := game_sharedLOCAL_MODULE_FILENAME := libgameLOCAL_SRC_FILES := hellocpp/main.cpp \                   ../../Classes/AppDelegate.cpp \                   ../../Classes/HelloWorldScene.cpp\../../Classes/sqlite3.c                   LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes                   LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static            include $(BUILD_SHARED_LIBRARY)$(call import-module,CocosDenshion/android) \$(call import-module,cocos2dx) \$(call import-module,extensions)

好了,在我的手机上的运行效果如下:



数据库文件保存的位置是/data/data/com.zhycheng.SQLiteTest/save.db3。


最后提供Android的源代码下载:点击打开链接。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 运动鞋买大一号怎么办 跑鞋买大了怎么办 鞋子大一个手指怎么办 一体式手机死机怎么办 ivvi手机声音小怎么办 单位欠缴社保怎么办 哆点错误代码1怎么办 忘记密码怎么办简单一点 智校园忘记密码怎么办 wps图片显示空白怎么办 dr.com闪退怎么办 联想笔记本连不上无线网络怎么办 长时间不用电池休眠怎么办? 校园电信卡欠费怎么办 校园联通卡欠费怎么办 校园网等不上怎么办 app显示尚未授权怎么办 手机屏有气泡怎么办 平板老是闪退怎么办 挖机环保不合格怎么办 摩托车高压火弱怎么办 助力转向机漏油怎么办 淘宝运费险不够怎么办 iphonex锁屏延迟怎么办 淘宝不能评价了怎么办 微商卖香烟不发货怎么办? 三诺血糖仪不准怎么办 如果点球平了怎么办 a2期胃溃疡怎么办水肿 末次月经记不清怎么办 身体弱容易生病怎么办 用复方沙棘出血怎么办 服了苯扎氯铵溶液怎么办 药监局查到过期药品怎么办 血管粥样硬化怎么办 化疗后血管硬化怎么办 牛油果没熟切开了怎么办 切开的牛油果没熟怎么办 牛油果打开不熟怎么办 牛油果切开不熟怎么办 牛油果没有熟怎么办