Cocos2d-x使用SQLite

COCOS学习--SQLite数据库持久化(16.5) SQLite数据库持久化 1.SQLite介绍 直接看维基的链接:https://zh.wikipedia.org/wiki/SQLite 2.重构属性列表数据持久化中的代码 访问数据表需要包含的函数有:初始化,增加,删除,修改和查询-所有数据,查询-byID。 初始化 { //path为路径 sqlite3* db= NULL; //打开数据库 if (sqlite... 阅读详情

转载自 老G 的BLOG
原帖地址:http://4137613.blog.51cto.com/4127613/772518


一、安装与配置
SQLite是使用非常广泛的嵌入式数据库,它有着0配置,占用资源少等特点。从大型游戏《魔兽世界》到android上的很多游戏和软件(google提供了一个java语言的绑定。)

在cocos2d-x中,我们使用它的C语言绑定。
为了方便和简化篇幅,我们直接使用它的源代码。下载地址:
 
将其解压到cocos2d-x引擎目录下,得到一个“sqlite-amalgamation-3071000”文件夹,里面有四个源文件。

在VC中新建一个项目,起名叫Save。

然后,右键点项目-》属性-》配置属性-》C++-》常规-》附加包含目录
添加刚才的解压的源代码路径。
 
下一步,右键点项目-》添加-》现有项,选择那四个源代码文件。然后SQLite就配置好了。

二、初步使用

在HelloworldScene中,添加

 
  1. #include "sqlite3.h" 
然后在init函数中编写代码

 
  1. sqlite3 *pDB = NULL;//数据库指针 
  2. char * errMsg = NULL;//错误信息 
  3. std::string sqlstr;//SQL指令 
  4. int result;//sqlite3_exec返回值 
  5.  
  6. //打开一个数据库,如果该数据库不存在,则创建一个数据库文件 
  7. result = sqlite3_open("save.db", &pDB); 
  8. if( result != SQLITE_OK ) 
  9.       CCLog( "打开数据库失败,错误码:%d ,错误原因:%s\n" , result, errMsg ); 
  10.   
  11.  //创建表,设置ID为主键,且自动增加 
  12. result=sqlite3_exec( pDB, "create table MyTable_1( ID integer primary key autoincrement, name nvarchar(32) ) " , NULL, NULL, &errMsg ); 
  13. if( result != SQLITE_OK ) 
  14.       CCLog( "创建表失败,错误码:%d ,错误原因:%s\n" , result, errMsg ); 
  15.  
  16. //插入数据 
  17. sqlstr=" insert into MyTable_1( name ) values ( '克塞' ) "; 
  18. result = sqlite3_exec( pDB, sqlstr.c_str() , NULL, NULL, &errMsg ); 
  19. if(result != SQLITE_OK ) 
  20.       CCLog( "插入记录失败,错误码:%d ,错误原因:%s\n" , result, errMsg ); 
  21.  
  22. //插入数据 
  23. sqlstr=" insert into MyTable_1( name ) values ( '葫芦娃' ) "; 
  24. result = sqlite3_exec( pDB, sqlstr.c_str() , NULL, NULL, &errMsg ); 
  25. if(result != SQLITE_OK ) 
  26.       CCLog( "插入记录失败,错误码:%d ,错误原因:%s\n" , result, errMsg ); 
  27.  
  28. //插入数据 
  29. sqlstr=" insert into MyTable_1( name ) values ( '擎天柱' ) "; 
  30. result = sqlite3_exec( pDB, sqlstr.c_str() , NULL, NULL, &errMsg ); 
  31. if(result != SQLITE_OK ) 
  32.       CCLog( "插入记录失败,错误码:%d ,错误原因:%s\n" , result, errMsg ); 
  33.  
  34.  //关闭数据库 
  35. sqlite3_close(pDB); 


然后执行项目,你看不到什么东西,因为只是操作了数据库。

三、SQLite数据库管理工具

SQLite Database Browser是一个用Qt编写的跨平台SQLite数据库管理工具。这个工具的特点是非常简单易用, 甚至很多人拿这个修改SQLite游戏存档。(哈哈哈,关于SQLite加密问题,我们以后会讲。)
这里附上他的下载地址:

然后,我们用这个工具,打开项目目录中Resources目录下的save.db,就可以看到刚才生成的数据库数据了。
 
一共三个标签页,DataBase Structure、Browse Data,Execute SQL……意思一目了然,不用多说。是不是很好用啊,哈哈哈。


四、其他常见SQLite操作举例

还是以上面的表举例,直接给出操作代码。具体接口解释可以参考官方文档: http://www.sqlite.org/docs.html
为了突出主要内容,删掉了一些调试信息。

1)更新记录
把第三条改成威震天  
 
  1. sqlstr="update MyTable_1 set name='威震天' where ID = 3"; 
  2.  sqlite3_exec( pDB, sqlstr.c_str() , NULL, NULL, &errMsg ); 

2)删除记录
把第二条葫芦娃删了  
 
  1. sqlstr="delete from MyTable_1 where ID = 2"; 
  2.  sqlite3_exec( pDB, sqlstr.c_str() , NULL, NULL, &errMsg ); 

3)判断表是否存在
判断表MyTable_1是否存在,保存在isExisted_中。
 
  1. bool isExisted_; 
  2. sqlstr="select count(type) from sqlite_master where type='table' and name='MyTable_1'"; 
  3. sqlite3_exec( pDB, sqlstr.c_str() , isExisted, &isExisted_, &errMsg ); 

这里用到了一个回调函数isExisted,他的定义如下:
 
  1. int isExisted( void * para, int n_column, char ** column_value, char ** column_name ) 
  2. { 
  3.             bool *isExisted_=(bool*)para; 
  4.             *isExisted_=(**column_value)!='0'; 
  5.             return 0; 
  6. } 

4)判断记录是否存在
判断ID=2的记录是否存在,保存在isExisted_中。
 
  1.  bool isExisted_; 
  2. sqlstr="select count(*) from MyTable_1 where ID = 2"; 
  3. sqlite3_exec( pDB, sqlstr.c_str() , isExisted, &isExisted_, &errMsg ); 
回调函数isExisted的定义,在3)已给出,不再赘述。

5)获得记录条数
获得表MyTable_1的记录条数,保存在count中。  
 
  1. int count; 
  2.  sqlstr="select * from MyTable_1"; 
  3.  sqlite3_exec( pDB, sqlstr.c_str() , loadRecordCount, &count, &errMsg ); 

这里用到了一个回调函数loadRecordCount,他的定义如下:
 
  1. int loadRecordCount( void * para, int n_column, char ** column_value, char ** column_name ) 
  2. { 
  3.             int *count=(int*)para; 
  4.             *count=n_column; 
  5.             return 0; 
  6. } 
 
6)读取一条记录
读取表MyTable_1中ID=3的记录,并打印
 
  1. sqlstr="select * from MyTable_1 where ID=3"; 
  2. sqlite3_exec( pDB, sqlstr.c_str() , loadRecord, NULL, &errMsg ); 

这里用到了一个回调函数loadRecord,他的定义如下:
 
  1. int loadRecord( void * para, int n_column, char ** column_value, char ** column_name ) 
  2. { 
  3.             CCLog("ID=%s,name=%s",column_value[0],column_value[1]); 
  4.             return 0; 
  5. } 



Cocos2d-x Sqlite3数据存储 Cocos2d-x开发游戏时,有时需要存储用户游戏状态信息,例如:金币,积分等。除了引擎自带的 CCUserDefault   , Xml 等来存储数据外,还可以使用Sqlite3数据库来存储数据. 首先下载使用Sqlite3所需的工具:Sqlite3 1.将下载文件中 sqlite3.h 和 sqlite3.c添加到自己的工程 2.简单写了一个对Sqlite3的封装类 SqliteMana 阅读详情

相关推荐

Cocos2d-x开发系列 lua sqlite集成 LSQLite3

项目中经常会使用到sqlite来存储数据,例如聊天,以及一些游戏中的配置。     Cocos2d-x引擎中是有一个storage文件夹,仔细看LocalStorage.h文件,里面说明了,值专门针对JS Bindings使用。另外没有sqlite.c文件。引擎中也没有SQLite的sqlite.c实现文件。所以我们需要到官网去下载: luaSqlite的源代码http://lua.sq

diyal的博客 5005

用实例说明在cocos2d-x 3.x中使用SQLite

我将用实例与扩充解释的方式具体说明如何创建SQLite数据库、建表,以及在cocos2d-x中使用SQLite读取现有数据库。 因为网上的大多教程只是通过cocos2d-x创建表,然后操作数据库。如何手动建表,读取现有的表却很少提。把自己的经验写出来,减少新手采坑的机会。 项目有个需求:列表显示祝福语类别,点击一个类别,列表分页显示祝福语。由于有几百条祝福语,直接全部写到内存中太傻了。分几个文件,读文件方式又麻烦。对于这样的要求,用sqlite是最适合不过了。一是轻量级,二是方便简单。

CoCosBoy的专栏 1614

cocos2d-x封装的sqlite3开源库

cocos2d-x封装的sqlite3开源库,简便很多

cocos2d-x学习笔记17:记录存储2:SQLite基本使用

 cocos2d-x学习笔记17:记录存储2:SQLite基本使用 一、安装与配置 SQLite是使用非常广泛的嵌入式数据库,它有着0配置,占用资源少等特点。从大型游戏《魔兽世界》到android上的很多游戏和软件(google提供了一个java语言的绑定。) 在cocos2d-x中,我们使用它的C语言绑定。 为了方便和简化篇幅,我们直接使用它的源代码。下载地址: htt...

weixin_34367257的博客 242

cocos2dx sqlite3存储例子

这是一个未来防止在未来的某一天忘记了的小傻瓜的备份,哈哈

cocos2dx Sqlite数据库生成工具

暂时只支持未加密的Sqlite数据库,如果模版有错误可以自行修改,详细请参照我的博客

cocos2d连接mysql数据库_Cocos数据篇[3.4](6) ——SQLite3数据库基础用法

【唠叨】在Cocos2d-x中,简单数据存储,可以使用UserDefault。那么如何存储大量,不规则的数据?我们可以使用 SQLite数据库 存储数据。SQLite 是使用非常广泛的嵌入式数据库,它有小巧 、高效、跨平台、开源免费和易操作的特点。所以大量的被用于手机、PDA、MP3播放器、以及机顶盒设备。SQLite数据库是使用C语言来编写的,因此在Cocos2d-x使用SQLite也是得心应...

weixin_39972151的博客 436

cocos2dx sqllite的使用【小菜在学习】

sqlite3 *pDB = NULL;//数据库指针 char * errMsg = NULL;//错误信息 std::string sqlstr;//SQL指令 int result;//sqlite3_exec返回值

cocos2d连接mysql数据库_cocos2d-x——sqLite3数据库基础用法

【前言】在Cocos2d-x中,简单数据存储,可以使用UserDefault。那么如何存储大量,不规则的数据?我们可以使用 SQLite数据库 存储数据。SQLite 是使用非常广泛的 嵌入式数据库 ,它有小巧 、高效、跨平台、开源免费和易操作的特点。所以大量的被用于手机、PDA、MP3播放器、以及机顶盒设备。SQLite数据库是使用C语言来编写的,因此在Cocos2d-x使用SQLite也是得心...

weixin_34189259的博客 408

Java 开发 修改【冒险岛 079 私服】完整学习流程

第 1-2 天:环境搭建 + 运行原版 079 服务端,能正常登录游戏;第 3-4 天:纯配置文件修改,掌握倍率、属性、怪物、道具的修改,改出第一个「百倍经验私服」;第 5-10 天:Java 代码基础修改,掌握 Player/Skill/Monster 核心类的修改,实现技能无冷却、一刀秒怪、升级满属性;第 11-20 天:Java 代码进阶修改,掌握业务逻辑修改,实现死亡不掉经验、自动捡物、装备强化无失败;第 21-30 天。

萧曳丶 3895

保姆级教程:2026版Windows电脑换新,微信QQ聊天记录无损搬家(附路径修改避坑指南)

本文提供2026版Windows电脑换新时微信QQ聊天记录无损迁移的保姆级教程,涵盖最新版微信/QQ的存储路径修改和避坑指南。通过详细步骤和实战技巧,确保数据迁移过程中不丢失任何珍贵对话记录和文件,特别适合需要保留完整聊天记录的用户。

weixin_42629815的博客 2484

cocos2d-x 中 Sqlite3 事务(Transaction)操作

在sqlite3中,事务是没提炼出一个接口。就只好写到sql语句中,不过倒是不太麻烦。sqlite3_exec ( m_pDB , "begin transaction" , 0 , 0 , & errMsg ); sqlite3_exec ( m_pDB , "commit transaction" , 0 , 0 , & errMsg ); sqlite3_exec ( m_pDB , "

阿修罗道 8669

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一小程序源码

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一系统 系统特点: 目前已接入的 CPS 渠道: 充值:话费充值、电费充值、影视会员充值、会员卡券充值 本地团购:联联周边游 电商平台:京东、拼多多、唯品会、淘宝、抖音美团:外卖、闪购、酒店、到店、优选饿了么:外卖、商超 出行服务:滴滴打车、滴滴加油、滴滴货运、花小猪打车、高德打车、同程打车 连锁餐饮点餐:肯德基、麦当劳、百果园、奈雪的茶、瑞幸咖啡、星巴克、喜茶、汉堡王、必胜客电影票:特价电影票 注意:以上涉及到需要支付的 CPS 渠道,不需要预存!

qq_41837379的博客 3111

cocos2d-x中SQLite基本使用

本文转自:http://4137613.blog.51cto.com/4127613/772518   一、安装与配置 SQLite是使用非常广泛的嵌入式数据库,它有着0配置,占用资源少等特点。从大型游戏《魔兽世界》到android上的很多游戏和软件(google提供了一个java语言的绑定。) 在cocos2d-x中,我们使用它的C语言绑定。 为了方便和简化篇幅,我们直接使用它

nothing的专栏 3775

MIPI RFFE 信号完整性与硬件设计

MIPI RFFE信号完整性设计关键点 摘要:MIPI RFFE作为射频前端控制总线,其信号完整性设计需平衡速率、驱动能力与抗干扰性。核心挑战在于确保接收端在52Mb/s速率下保持足够的电压和时序裕量。关键设计考量包括: 驱动能力优化:过强导致过冲/振铃和射频杂散,过弱则恶化时序裕量,需与总线负载匹配。 波形质量指标:严格控制上升/下降时间(兼顾EMC和时序要求),抑制过冲/振铃幅度,管理VIO电源纹波和耦合噪声。

sinat_15150363的博客 240

001、专栏导论:为什么我们需要MLIR与算子中间表示

五年前,大家还在争论“TVM还是XLA”。现在回头看,TVM的Relay IR和XLA的HLO都是特定领域的IR,它们解决了各自的问题,但缺乏通用性。MLIR的出现,本质上是因为硬件异构化已经到了一个临界点——CPU、GPU、NPU、DSP、FPGA,每个硬件都有自己的指令集和内存层次,没有一个统一的IR能同时高效表达所有硬件的计算模式。MLIR的“方言+渐进式lowering”模式,恰好提供了这种灵活性。你可以为每个硬件定制一套方言,然后共享公共的lowering路径。

Jack010169的博客 488

cocos2d-x SQLite基本使用

一、安装与配置 SQLite是使用非常广泛的嵌入式数据库,它有着0配置,占用资源少等特点。从大型游戏《魔兽世界》到android上的很多游戏和软件(google提供了一个java语言的绑定。) 在cocos2d-x中,我们使用它的C语言绑定。 为了方便和简化篇幅,我们直接使用它的源代码。下载地址: http://www.sqlite.org/sqlite-ama

z104207的专栏 5267

基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机

目录基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机项目实例1. 项目背景2. 系统架构2.1 电励磁同步电动机模型2.2 三相逆变器模型2.3 自适应控制器(Adaptive Controller)2.4 系统框图3. 模型设计3.1 创建Simulink模型3.2 自适应控制(Adaptive Control)设计3.3 仿真环境搭建4. 参数优化4.1 自动调优5. 实际应用案例5.1 工业驱动系统5.2 风力发电系统6. 结论进一步优化建议需求分析电励磁同步电动机

MHD0815的博客 266

Cocos2d-x SQLite专题

转自:http://blog.youkuaiyun.com/zhy_cheng/article/details/8634967   在cocos2d-x中,简单数据存储,可以使用CCUserDefault,大家可以看看我前一篇博文。至于大量,不规则的数据存储,则使用SQLite数据库。SQLite数据库的使用,请参考我的博文C++操作SQLite数据库,在此博文中,主要讲解怎么样使用C++来操作数

3082

我写了一个自动识别火车车厢位置的算法【lidar点云识别】

我写了一个自动识别火车车厢位置的算法【lidar点云识别】

qq_43212290的博客 798

在Keil uv5里面添加STC元器件库,不影响其他元件

先到网上下载stc.CBD(宏晶网站的地址实效了)还有STC新系列单片机的头文件,宏晶的网站就有1、在Keil/C51/INC下新建目录"STC"文件夹, 把所有STC新系列单片机的头文件拷贝到"STC"目录下。2、下载的用于keil下的STC器件数据库更名为STC.CDB并拷贝到Keil/UV4目录下。3、打开Keil文件夹下的TOOLS.ini文件。4、在[UV2]下键入CDB0="UV2\S

技术联盟 1万+

在Cocos2d-x中使用SQLite数据库

刚刚刚

meishadevs的个人博客 3581

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

cocos2d-x sqlite3使用整理

ios报错:Linker Error "_sqlite3_exec", referenced from: "_sqlite_open", referenced from: "_sqlit 在cocos2d-x中使用sqllite3库,进行数据库操作。 windows、android: 需要自己下载sqlite库文件,下载地址:http://download.youkuaiyun.com/do

Tim_大叔的博客 1349

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

cocos2d-x sqlite的使用,数据库操作的封装

本篇博客出自阿修罗道,转载请注明出处:http://blog.youkuaiyun.com/fansongy/article/details/8922054     移动平台要用到sqllite,发现cocos2d-x中没有专门的类对接。为了以后省事,就自己写了个封装。     数据库的形式是Key-Value。如果某种类的数据项过多,可以将大类作为表名,以便将来的拓展。     加密方面采用的是数

阿修罗道 7610

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

cocos2d-x vs2010配置sqlite

在cocos2d-x中一般使用sqlite的c语言绑定,直接下载其源码,下载地址:http://www.sqlite.org/download.html,下载后解压,如下 新建一个项目sqliteTest, 将下载后的sqlite-amalgamation-3070401(这个是我解压后得到的文件夹)文件夹复制到刚才新建的项目class文件夹里面,然后 右击sqliteTes...

dlgms057649的博客 153
上一篇: cocos2d-x获取平台类型
下一篇: Cocos2d-x SQLite使用错误
wangbofei
博客等级 码龄24年 33粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值