设为首页 收藏本站
查看: 1197|回复: 0

[经验分享] 【Cocos2d-x游戏引擎开发笔记(20)】SQLite专题

[复制链接]

尚未签到

发表于 2016-11-30 10:32:35 | 显示全部楼层 |阅读模式
  原创文章,转载请注明出处: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_shared
LOCAL_MODULE_FILENAME := libgame
LOCAL_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)


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

  

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

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-307611-1-1.html 上篇帖子: android 数据库 sqlite数据类型 下篇帖子: SQLite 数据库,sql语言初探
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表