cocos2d-x2.1.2下使用sqlite3的例子

来源:互联网 发布:索尼移动电源 知乎 编辑:程序博客网 时间:2024/06/16 01:22

首先,将这两个文件导入到工程当中,后面会给大家下载地址,当然也可以去官网上下载。

在HelloWorldScene.h中导入头文件:

#include "sqlite3.h"

之后声明如下函数和成员

// there's no 'id' in cpp, so we recommend to return the class instance pointer    static cocos2d::CCScene* scene();    //保存路径    std::string path;    //sql语句    std::string sql;    //数据库对象    sqlite3 *pdb;    //记录返回结果是否成功    int result;        //创建表    void createTable();    //插入数据    void insertData();    //查看数据    void LookUpData();    //删除数据    void deleteData();


在HelloWorldScene.cpp中插入如下代码:

// on "init" you need to initialize your instancebool HelloWorld::init(){    //////////////////////////////    // 1. super init first    if ( !CCLayer::init() )    {        return false;    }    pdb=NULL;        CCLabelTTF* createLabel = CCLabelTTF::create("创建表", "Arial", 24);    CCMenuItemLabel* createItem = CCMenuItemLabel::create(createLabel, this, menu_selector(HelloWorld::createTable));    CCMenu* createMenu = CCMenu::create(createItem,NULL);    createMenu->setPosition(ccp(100, 300));    this->addChild(createMenu);        CCLabelTTF* insertLabel = CCLabelTTF::create("插入数据", "Arial", 24);    CCMenuItemLabel* insertItem = CCMenuItemLabel::create(insertLabel, this, menu_selector(HelloWorld::insertData));    CCMenu* insertMenu = CCMenu::create(insertItem,NULL);    insertMenu->setPosition(ccp(100, 200));    this->addChild(insertMenu);            CCLabelTTF* lookUpLabel = CCLabelTTF::create("查看数据", "Arial", 24);    CCMenuItemLabel* lookUpItem = CCMenuItemLabel::create(lookUpLabel, this, menu_selector(HelloWorld::LookUpData));    CCMenu* lookUpMenu = CCMenu::create(lookUpItem,NULL);    lookUpMenu->setPosition(ccp(100, 100));    this->addChild(lookUpMenu);            CCLabelTTF* deleteLabel = CCLabelTTF::create("删除数据", "Arial", 24);    CCMenuItemLabel* deleteItem = CCMenuItemLabel::create(deleteLabel, this, menu_selector(HelloWorld::deleteData));    CCMenu* deleteMenu = CCMenu::create(deleteItem,NULL);    deleteMenu->setPosition(ccp(200, 100));    this->addChild(deleteMenu);            return true;}//创建表void HelloWorld::createTable(){    //获取保存路径  + 保存文件名    path=CCFileUtils::sharedFileUtils()->getWritablePath() +"save.db";            std::cout<<"path"<<path<<std::endl;        //std::string sql;        result=sqlite3_open(path.c_str(),&pdb);    if(result!=SQLITE_OK)        CCLog("open database failed,  number%d",result);        //创建表的方法    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 failed1");        sqlite3_close(pdb);        }//插入数据void HelloWorld::insertData(){    result=sqlite3_open(path.c_str(),&pdb);    if(result!=SQLITE_OK)        CCLog("open database failed,  number%d",result);            sql="insert into student  values(1,'changmen','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,'xiaonan','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,'peien','male')";    result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);    if(result!=SQLITE_OK)        CCLog("insert data failed!");        }//删除数据void HelloWorld::deleteData(){    sqlite3_open(path.c_str(), &pdb);    sql="delete from student where ID=1";    result=sqlite3_exec(pdb,sql.c_str(), NULL,NULL,NULL);    if(result!=SQLITE_OK)        CCLog("delete data failed!");}//查看数据void HelloWorld::LookUpData(){            char **re;        int r = 0,c = 0;        sqlite3_get_table(pdb,"select * from student",&re,0,0,NULL);        CCLog("row is %d,column is %d",r,c);        CCLabelTTF *liu=CCLabelTTF::create(re[7],"Arial",24);    liu->setPosition(ccp(200,200));    addChild(liu,1);    CCLog(re[2*c+1]);            sqlite3_free_table(re);        sqlite3_close(pdb);    }

运行结果如下


代码例子下载:  http://vdisk.weibo.com/s/BDn59yfnBU_2k