SQLite的使用二

(这里讲的是如何在Cocos2d-x引擎中使用SQLite数据库)

1、去官网下载SQLite(http://www.sqlite.org/download.html )并安装;

2、获取SQLite头文件(http://download.csdn.net/detail/jacedy/7922513 );

3、新建一个Cocos2d-x工程,将SQLite头文件添加到工程中,同时在程序中包含头文件:

1
2
#include "GameScene.h"
#include "sqlite3.h"      //加入头文件

    

    创建SQLite数据库文件

1
2
3
4
5
    sqlite3 *pdb = NULL;    //数据库对象
    std::string path = FileUtils::getInstance()->getWritablePath() + "test4.db";    //保存路径
     
    std::string sqlstr;     //SQL语句
    int result;

1
    log("%s", path.c_str());    ///Users/mac/Library/Application\ Support/iPhone\ Simulator/7.1-64/Applications/7B6164DE-7E7A-4C70-980B-2B548AB3774A/Documents/


    打开一个数据库文件,如果不存在则新建

1
2
3
4
5
    result = sqlite3_exec(pdb, "create table student1(id integer, name text, sex text)", NULL, NULL, NULL);
    if(result != SQLITE_OK)
        log("create table faild");
    else
        log("create table success");


    插入操作

1
2
3
4
5
6
    sqlstr = "insert into student1(id, name, sex) values(1, 'jia*', 'male')";
    result = sqlite3_exec(pdb, sqlstr.c_str(), NULL, NULL, NULL);
    if(result != SQLITE_OK)
        log("insert data faild");
    else
        log("insert data success");


    查询操作

1
2
3
4
5
6
7
8
9
    char **re;
    int r, c;
    sqlite3_get_table(pdb, "select * from student1", &re, &r, &c, NULL);
    log("row is %d, column is %d", r, c);
     
//    log(re[2*c+1]);
 
    for(int i=0; i<r; i++)
        log("%s", re[i]);


    关闭数据库

1
    sqlite3_close(pdb);


完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//  Created by Jacedy on 14-8-11.
//
//
 
#include "GameScene.h"
#include "sqlite3.h"      //加入头文件
 
USING_NS_CC;
 
cocos2d::Scene* GameScene::createScene()
{
    auto scene = Scene::create();   //创建一个场景
    auto layer = GameScene::create();   //创建一个图层
    scene->addChild(layer);
    return scene;
}
 
//初始化当前的图层
bool GameScene::init()
{
    if(!Layer::init())      //初始化父类
        return false;
     
    //获取屏幕大小
    size = Director::getInstance()->getVisibleSize();
    //auto size = Director::getInstance()->getWinSize();
     
    //创建SQLite数据库文件
    sqlite3 *pdb = NULL;    //数据库对象
    std::string path = FileUtils::getInstance()->getWritablePath() + "test4.db";    //保存路径
     
    std::string sqlstr;     //SQL语句
    int result;
     
    log("%s", path.c_str());    ///Users/mac/Library/Application\ Support/iPhone\ Simulator/7.1-64/Applications/7B6164DE-7E7A-4C70-980B-2B548AB3774A/Documents/
     
    //打开一个数据库文件,如果不存在则新建
    result = sqlite3_open(path.c_str(), &pdb);
    if(result != SQLITE_OK)
        log("open databases faild %d", result);
    else
        log("open databases success %d", result);
     
    //创建表
    result = sqlite3_exec(pdb, "create table student1(id integer, name text, sex text)", NULL, NULL, NULL);
    if(result != SQLITE_OK)
        log("create table faild");
    else
        log("create table success");
     
    //插入操作
    sqlstr = "insert into student1(id, name, sex) values(1, 'jia*', 'male')";
    result = sqlite3_exec(pdb, sqlstr.c_str(), NULL, NULL, NULL);
    if(result != SQLITE_OK)
        log("insert data faild");
    else
        log("insert data success");
     
    sqlstr = "insert into student1(id, name, sex) values(2, 'jia*', 'male')";
    result = sqlite3_exec(pdb, sqlstr.c_str(), NULL, NULL, NULL);
    if(result != SQLITE_OK)
        log("insert data faild");
    else
        log("insert data success");
     
    //查询操作
    char **re;
    int r, c;
    sqlite3_get_table(pdb, "select * from student1", &re, &r, &c, NULL);
    log("row is %d, column is %d", r, c);
     
//    log(re[2*c+1]);
 
    for(int i=0; i<r; i++)
        log("%s", re[i]);
     
//    sqlite3_free_table(re);
     
    //关闭数据库
    sqlite3_close(pdb);
     
    return true;
}
上一篇:SSISDB2:SSIS工程的操作实例


下一篇:[算法系列之二]二叉树各种遍历