Sqlite   发布时间:2022-05-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ocos2d-x中使用sqlite数据库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
ocos2d-x中使用SQLite数据库
分类: cocos2d-x 637人阅读 评论(0) 收藏 举报

下载附件,解压,添加到工程中,加入头文件

Cpp代码
  1. include "sqlite/sqlite3.h"
[cpp] view plain copy print ?
  1. include "sqlite/sqlite3.h"

创建数据库的代码 返回sqlite3的一个指针,通过该指针可以添加、修改、删除数据

Cpp代码
  1. sqlite3 * dbutils::creattable()
  2. {
  3. sqlite3 *pDB = NulL;//数据库指针
  4. char * errMsg = NulL;//错误信息
  5. std::String sqlstr;//sql指令
  6. int result;//sqlite3_exec返回值
  7. //打开一个数据库,如果该数据库不存在,则创建一个数据库文件
  8. result = sqlite3_open("save.db",&pDB);
  9. if( result != @R_389_5607@OK )
  10. // cclog( "打开数据库失败,错误码:%d错误原因:%s\n",result,errMsg );
  11. cout<<errMsg<<endl;
  12. //创建表,设置ID为主键,且自动增加
  13. result=sqlite3_exec( pDB, "create table Info( ID INTEGER PRIMary key autoincrement,name nvarchar(32),score nvarchar(50),aWARD nvarchar(50)) ",NulL,&errMsg );
  14. return pDB;
  15. // sqlite3_close(pDB);
  16. }
[cpp] view plain copy print ?
  1. sqlite3 * dbutils::creattable()
  2. {
  3. sqlite3 *pDB = NulL;//数据库指针
  4. char * errMsg = NulL;//错误信息
  5. std::String sqlstr;//sql指令
  6. int result;//sqlite3_exec返回值
  7. //打开一个数据库,如果该数据库不存在,则创建一个数据库文件
  8. result = sqlite3_open("save.db",&pDB);
  9. if( result != @R_389_5607@OK )
  10. // cclog( "打开数据库失败,错误码:%d错误原因:%s\n",errMsg );
  11. cout<<errMsg<<endl;
  12. //创建表,设置ID为主键,且自动增加
  13. result=sqlite3_exec( pDB,"create table Info( ID INTEGER PRIMary key autoincrement,aWARD nvarchar(50)) ",&errMsg );
  14. return pDB;
  15. // sqlite3_close(pDB);
  16. }

通过创建数据库返回的指针,保存数据

Cpp代码
  1. int dbutils::save(sqlite3 *pDB)
  2. {
  3. char * errMsg=NulL;
  4. std::String sqlstr=" insert into Info(name,score,aWARD) values ( '1','1','1' ) ";
  5. int result = sqlite3_exec( pDB,sqlstr.c_str(),&errMsg );
  6. return result;
  7. }
[cpp] view plain copy print ?
  1. int dbutils::save(sqlite3 *pDB)
  2. {
  3. char * errMsg=NulL;
  4. std::String sqlstr=" insert into Info(name,'1' ) ";
  5. int result = sqlite3_exec( pDB,&errMsg );
  6. return result;
  7. }

查询数据

定义一个全局函数,也就是在类外定义

Cpp代码
  1. int loadRecord( voID * para,int n_column, char ** column_value,char ** column_name )
  2. {
  3. InfoBean * info=new InfoBean(column_value[0],column_value[1],column_value[2],column_value[3]);
  4. /*info->setID(column_value[0]);
  5. info->setname(column_value[1]);
  6. info->setscore(column_value[2]);
  7. info->setAWARD(column_value[3]);*/
  8. dbutils::List->addobject(info);
  9. info->autorelease();
  10. return 0;
  11. }
[cpp] view plain copy print ?
  1. int loadRecord( voID * para,int n_column,char ** column_value,char ** column_name )
  2. {
  3. InfoBean * info=new InfoBean(column_value[0],column_value[3]);
  4. /*info->setID(column_value[0]);
  5. info->setname(column_value[1]);
  6. info->setscore(column_value[2]);
  7. info->setAWARD(column_value[3]);*/
  8. dbutils::List->addobject(info);
  9. info->autorelease();
  10. return 0;
  11. }

定义一个类的静态成员函数

Cpp代码
  1. voID dbutils::ListAll(sqlite3 *pDB)
  2. {
  3. dbutils::List=new CCSet();
  4. List->autorelease();
  5. char * errMsg=NulL;
  6. std::String sqlstr="SELEct * from Info order by score desc limit 0,10";
  7. int result = sqlite3_exec( pDB,loadRecord,&errMsg );
  8. }
[cpp] view plain copy print ?
  1. voID dbutils::ListAll(sqlite3 *pDB)
  2. {
  3. dbutils::List=new CCSet();
  4. List->autorelease();
  5. char * errMsg=NulL;
  6. std::String sqlstr="SELEct * from Info order by score desc limit 0,10";
  7. int result = sqlite3_exec( pDB,&errMsg );
  8. }

当调用ListAll的时候,执行到sqlite3_exec的时候,会回调loadRecord函数,一条数据调用一次

遍历CCSet

Cpp代码
  1. CCSetIterator it;
  2. InfoBean *bean;
  3. CCSet * List=ListAllRecord();
  4. cclOG("%s","Hello");
  5. int position[]={300,606,300,530,454,378,302,760,302};
  6. int i=0;
  7. for(it=List->begin();it!=List->end();it++)
  8. {
  9. bean=(InfoBean *)(*it);
  10. if(!bean)
  11. break;
  12. cclOG("%s",bean->getname());
  13. cclabelTTF *m_pLabelname = cclabelTTF::labelWithString(bean->getname(),"Arial",30);
  14. m_pLabelname->setcolor(ccc3(255,0));
  15. int temp_one=2*i;
  16. int temp_two=(i+1)*2-1;
  17. m_pLabelname->setposition(CCPointMake(position[temp_one],position[temp_two]));
  18. this->addChild(m_pLabelName);
  19. cclabelTTF *m_pLabelscore = cclabelTTF::labelWithString(bean->getscore(),30);
  20. m_pLabelscore->setcolor(ccc3(255,0));
  21. m_pLabelscore->setposition(CCPointMake(position[temp_one]+150,position[temp_two]));
  22. this->addChild(m_pLabelscore);
  23. i++;
  24. }

大佬总结

以上是大佬教程为你收集整理的ocos2d-x中使用sqlite数据库全部内容,希望文章能够帮你解决ocos2d-x中使用sqlite数据库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:解压