【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的源代码下载:点击打开链接。
- 【Cocos2d-x游戏引擎开发笔记(20)】SQLite专题
- 【Cocos2d-x游戏引擎开发笔记(20)】SQLite专题
- 【Cocos2d-x游戏引擎开发笔记】定时器
- 【Cocos2d-x游戏引擎开发笔记(1)】HelloWorld
- 【Cocos2d-x游戏引擎开发笔记(4)】系统动画
- 【Cocos2d-x游戏引擎开发笔记(5)】自定义动画
- 【Cocos2d-x游戏引擎开发笔记(7)】定时器
- 【Cocos2d-x游戏引擎开发笔记(18)】图形绘制
- 【Cocos2d-x游戏引擎开发笔记(21)】CCHttpRequest联网
- 【Cocos2d-x游戏引擎开发笔记(22)】TexturePacker的使用
- 【Cocos2d-x游戏引擎开发笔记(25)】XML解析
- 【Cocos2d-x游戏引擎开发笔记(21)】CCHttpRequest联网
- 【Cocos2d-x游戏引擎开发笔记(21)】CCHttpRequest联网
- 【Cocos2d-x游戏引擎开发笔记(7)】定时器
- 【Cocos2d-x游戏引擎开发笔记】进度条CCProgressTimer
- 【Cocos2d-x游戏引擎开发笔记】CCHttpRequest联网
- 【Cocos2d-x游戏引擎开发笔记(25)】XML解析
- 【Cocos2d-x游戏引擎开发笔记(25)】XML解析
- ios点击返回按钮的回调方法
- 解决group by出来的字段既需要有作为列字段的又需要有作为行字段的报表问题
- iOS强制切换横屏、竖屏
- java与c++的区别
- 常犯错误记录
- 【Cocos2d-x游戏引擎开发笔记(20)】SQLite专题
- 学习笔记_第二章
- 部署软件常遇到错误总结
- java与c++的区别
- 研究生小论文的投稿技巧
- java代码运行过程
- python使用suds调用webservice
- Windows下数据库访问技术ODBC
- Linux Kernel 的学习笔记