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

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

在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 instance
bool 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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜甲同学

感谢打赏,我会继续努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值