Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了转cocos2dx官网上的sqlite基础使用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

sqlite集成与用法

概述

在Cocos2d-x中,简单数据存储,可以使用UserDefault。那么如何存储大量,不规则的数据?我们可以使用SQLite数据库存储数据。sqlite是使用非常广泛的嵌入式数据库,它有小巧 、高效、跨平台、开源免费和易操作的特点。

sqlite数据库是使用C语言来编写的,那么在Cocos2d-x使用SQLite也是得心应手。

准备

首先创建一个Cocos2d-x v3.x的Helloworld工程,我们将以该工程作为sqlite集成与用法的实战工程。

打开终端,使用如下命令新建工程:

1
@H_675_26@cocos new @H_675_26@ HelloWorld -p com.your_company.HelloWorld -l cpp

按照上面的操作,我们新建了一个Cocos2d-x v3.x的HelloWorld工程。

iOS/Mac

iOS/Mac的系统库自带sqlite库,我们只需添加libsqlite3.0.dylib库即可。

Android

Android系统没有自带sqlite库,我们需要手动添加。

1.下载sqlite包

下载地址:http://www.sqlite.org/download.html下载后,在项目中导入sqlite3.csqlite3.h两个文件即可。

2.导入到工程

3.修改Android.mk

使用SQLite

打开HelloWorldScene.cpp文件,我们在里面加入sqlite的使用示例

引入头文件

#include "sqlite3.h"

创建SQLite 数据库

1
2
3
4
@H_618_97@ 5
6
7
8
9
10
sqlite3 *pdb=NULL; //1
@H_675_26@std::string path= FileUtils::geTinstance()->getWritablePath()+ "save.db" @H_675_26@; //2
@H_675_26@std::String sql;
int @H_675_26@ result;
@H_675_26@result=sqlite3_open(path.c_str(),&pdb); //3
@H_618_143@ if @H_675_26@(result!=@R_211_5607@OK)
@H_675_26@{
log @H_675_26@( "open database failed,number%d" @H_675_26@,result);
@H_675_26@}
  1. 数据库指针
  2. 指定数据库的路径
  3. 打开一个数据库,如果该数据库不存在,则创建一个数据库文件

sql语

sql="create table student(ID INTEGER PRIMary key autoincrement,@R_639_4687@t,sex text)"//1
  1. 建表sql语

创建Table

3
result=sqlite3_exec(pdb,sql.c_str(),NULL,null); //1
(result!=@R_211_5607@OK)
"create table failed" @H_675_26@);
  1. 建表

插入数

10
11
12
13
14
"insert into student values(1,'student1','male')" @H_675_26@;
:1.1em!important; outline:0px!important; overflow:visible!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,null);
(result!=@R_211_5607@OK)
"insert data failed!" @H_675_26@);
"insert into student values(2,'student2','female')" @H_675_26@;
@H_618_143@ :1.1em!important; outline:0px!important; overflow:visible!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,null);
(result!=@R_211_5607@OK)
);
"insert into student values(3,'student3',monospace!important; font-size:1em!important; min-height:inherit!important">;
:1.1em!important; outline:0px!important; overflow:visible!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,null);
(result!=@R_211_5607@OK)
  • 向表中插入3条数据
  • 查询

    @H_262_312@ 13
    char @H_675_26@ **re; //查询结果
    r,c; //行、列
    @H_675_26@sqlite3_get_table(pdb, "SELEct * from student" //1
    "row is %d,column is %d" :1.1em!important; outline:0px!important; overflow:visible!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,r,c);
    for @H_675_26@( i=1;i<=r;i++) //2
    @H_618_143@ @H_675_26@{
    j=0;j<c;j++)
    @H_675_26@{
    "%s" :1.1em!important; outline:0px!important; overflow:visible!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,re[i*c+j]);
    }
    @H_675_26@}
    @H_675_26@sqlite3_free_table(rE);
    1. 查询表中的数据
    2. 将查询结果的log输出

    查询结果:

    cocos2d: row is 3,column is 3
    @H_675_26@cocos2d: 1
    @H_675_26@cocos2d: student1
    @H_675_26@cocos2d: male
    @H_675_26@cocos2d: 2
    @H_675_26@cocos2d: student2
    @H_618_143@ @H_675_26@cocos2d: female
    @H_675_26@cocos2d: 3
    @H_675_26@cocos2d: student3
    @H_675_26@cocos2d: male

    我们可以看到查询到结果和我们前面插入的数据一样。

    删除

    4
    "delete from student where ID=1" //1
    "delete data failed!"
  • 删除ID=1的学生
  • 使用上面的查询语句查询删除ID=1的学生后的数据

    7
    cocos2d: row is 2,monospace!important; font-size:1em!important; min-height:inherit!important">cocos2d: 2
    @H_675_26@cocos2d: student2
    @H_675_26@cocos2d: female
    @H_675_26@cocos2d: 3
    @H_675_26@cocos2d: student3
    @H_618_143@ 我们可以看到,表中ID=1的数据已经被删除了

    注意:

    使用SQLite一定要注意的内存管理问题,那就是打开数据库之后,数据操作完成之后,一定要关闭数据库,否侧会造成内存泄漏。

    sqlite3_close(pdb);

    数据文件存放的位置

    • Android:
    /data/data/com.youCompany.Helloworld/files/save.db
    • iOS:

    位于程序沙盒的文档目录下

    ../Documents/save.db

    大佬总结

    以上是大佬教程为你收集整理的转cocos2dx官网上的sqlite基础使用全部内容,希望文章能够帮你解决转cocos2dx官网上的sqlite基础使用所遇到的程序开发问题。

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

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