cocos2d-x在Android真机上使用Sqlite数据库
2015-08-17 16:11
423 查看
转自点击打开链接
暂未验证。
首先,我是使用sqlite3.c来操作sqlite的,这个库的下载和使用,很多教程上都有介绍。
在win32和MacOS上,这个库的使用没啥特别,但是在Android上,却无法直接读取。
这里要说明,Android不能读取的原因,是因为对数据库的操作必须有root权限,也就是说,我们的应用程序只能对系统提供的特定目录中的数据库文件进行操作。
这个目录,cocos2.1.3可以通过CCFileUtils::sharedFileUtils()->getWritablePath()来获得。
也就是说,我们需要把资源目录下的sliqte库文件,复制到CCFileUtils::sharedFileUtils()->getWritablePath()中,才可以对其进行操作。
对于这种情况,我的解决方案是,在AppDelegate.cpp中,做如下实现
在程序启动时,检查sqlite是否存在,不存在,则复制一份
暂未验证。
首先,我是使用sqlite3.c来操作sqlite的,这个库的下载和使用,很多教程上都有介绍。
在win32和MacOS上,这个库的使用没啥特别,但是在Android上,却无法直接读取。
这里要说明,Android不能读取的原因,是因为对数据库的操作必须有root权限,也就是说,我们的应用程序只能对系统提供的特定目录中的数据库文件进行操作。
这个目录,cocos2.1.3可以通过CCFileUtils::sharedFileUtils()->getWritablePath()来获得。
也就是说,我们需要把资源目录下的sliqte库文件,复制到CCFileUtils::sharedFileUtils()->getWritablePath()中,才可以对其进行操作。
对于这种情况,我的解决方案是,在AppDelegate.cpp中,做如下实现
bool isFileExist(const char* pFileName) { if(!pFileName)return false; std::string filePath = CCFileUtils::sharedFileUtils()->getWritablePath(); filePath+=pFileName; FILE *pFp = fopen(filePath.c_str(),"r"); CCLog(filePath.c_str()); if(pFp) { fclose(pFp); return true; } return false; } void copyData(const char* pFileName) { std::string strPath = CCFileUtils::sharedFileUtils()->fullPathForFilename(pFileName); unsigned long len=0; unsigned char* data =NULL; data = CCFileUtils::sharedFileUtils()->getFileData(strPath.c_str(),"r",&len); std::string destPath = CCFileUtils::sharedFileUtils()->getWritablePath(); destPath+= pFileName; FILE *pFp=fopen(destPath.c_str(),"w+"); fwrite(data,sizeof(char),len,pFp); fclose(pFp); delete []data; data=NULL; } bool AppDelegate::applicationDidFinishLaunching() { #if (CC_TARGET_PLATFORM !=CC_TARGET_WIN32)//Android下需要复制数据文件 //检查数据库文件是否已经提取 if(isFileExist("dbd_user_save.db")==false) { copyData("dbd_user_save.db");//要使用的sqlite库文件 } #endif //下略
在程序启动时,检查sqlite是否存在,不存在,则复制一份
相关文章推荐
- cocos自定义类 绑定到lua
- Cocos2dx播放mp4文件(IOS和Android)
- COCOS2D-JS的屏幕适配方案
- CocoStudio:ImageView分析
- [转]cocos2dx中用外部浏览器打开url
- Cocos2d-x能够实现的效果总结
- Agar 流体效果的 Cocos2d-JS 实现
- Cocos2dx_背景层循环滚动
- 在cocos2d-x在CCTableView使用控制
- 9秒学院总结Cocos2d-X面试题
- Eclipse编译调试Cocos2d问题汇总
- Cocos2dx_视觉差效果层ParallaxNode
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第三节:3D摄像机
- 9秒学院总结Cocos2d-X面试题
- Cocos2d-x问题纪录:removeChild和附有PhysicsBody的csb动画
- Cocos2d-js中Chipmunk引擎
- Cocos2d-x学习笔记(五)仿真树叶飘落效果的实现(精灵旋转、翻转、钟摆运动等综合运用)
- cocos2dx——lua自动和手动绑定
- Cocos中有关九宫格的解释
- Cocos2dx创建碰撞刚体