cocos2dx sqllite 增删查改等操作

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

首先导入文件shell.c sqllite3.c sqlite3.h sqlite3etx.h文件(注意在生成安卓项目是 不要将shell.c写进android.mk文件中,写进去在cywin中生成会出错,当时搞了很久发现的)

创建数据库

	sqlite3 *pDB = NULL;			//数据库指针  
	char * errMsg = NULL;			//错误信息
	std::string sqlstr;				//SQL指令 
	int result;						//sqlite3_exec返回值
	bool isExisted_;				//判断是否开始
	char db[100]="";
 	std::string path = CCFileUtils::sharedFileUtils()->getWritablePath(); 
 	strcpy(db, path.c_str());
 	strcat(db,"save.db");

	result = sqlite3_open(db, &pDB);//如果不存在及新建数据库,存在及打开

	sqlstr="select count(type) from sqlite_master where type='table' and name='achievement_t'";//是否存在这个表
	sqlite3_exec( pDB, sqlstr.c_str() , ::isExisted, &isExisted_, &errMsg );//不存在 及isExisted_为false

函数isExisted

int isExisted( void * para, int n_column, char ** column_value, char ** column_name ) 
{ 
	bool *isExisted_=(bool*)para; 
	*isExisted_=(**column_value)!='0'; 
	return 0; 
}

创建表

result=sqlite3_exec( pDB, "create table achievement_t( id integer primary key autoincrement, stute integer ) " , NULL, NULL, &errMsg );
插入数据

		sqlstr=" insert into achievement_t( stute) values ( 0 ) "; 
		for(int i=0;i<15;i++){
			result = sqlite3_exec( pDB, sqlstr.c_str() , NULL, NULL, &errMsg );
		}

以上是我做项目的

对于那些增删查改如下例子

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

		//打开一个数据库,如果该数据库不存在,则创建一个数据库文件 
		result = sqlite3_open("save.db", &pDB); 
		if( result != SQLITE_OK ) 
			CCLog( "打开数据库失败,错误码:%d ,错误原因:%s\n" , result, errMsg ); 

		//创建表,设置ID为主键,且自动增加 
		result=sqlite3_exec( pDB, 
			"create table MyTable_1( ID integer primary key autoincrement, name nvarchar(32) ) " ,
			NULL, NULL, &errMsg ); 
		if( result != SQLITE_OK ) 
			CCLog( "创建表失败,错误码:%d ,错误原因: %s\n" , result, errMsg ); 

		//插入数据 
		sqlstr=" insert into MyTable_1( name ) values ( '克塞' ) "; 
		result = sqlite3_exec( pDB, sqlstr.c_str() , NULL, NULL, &errMsg ); 
		if(result != SQLITE_OK ) 
			CCLog( "插入记录失败,错误码:%d ,错误原因:%s\n" , result, errMsg ); 

		//插入数据 
		sqlstr=" insert into MyTable_1( name ) values ( '葫芦' ) "; 
		result = sqlite3_exec( pDB, sqlstr.c_str() , NULL, NULL, &errMsg ); 
		if(result != SQLITE_OK ) 
			CCLog( "插入记录失败,错误码:%d ,错误原因:%s\n" , result, errMsg ); 

		//插入数据 
		sqlstr=" insert into MyTable_1( name ) values ( '擎天' ) "; 
		result = sqlite3_exec( pDB, sqlstr.c_str() , NULL, NULL, &errMsg ); 
		if(result != SQLITE_OK ) 
			CCLog( "插入记录失败,错误码:%d ,错误原因:%s\n" , result, errMsg ); 
		//查询语句
		sqlstr="select * from MyTable_1"; 
		result= sqlite3_exec( pDB, sqlstr.c_str() ,loadRecord, 0, &errMsg );  
		//关闭数据库 
		sqlite3_close(pDB); 
回到我自己项目需要批量查询我用

	sqlite3 *pDB = NULL;			//数据库指针  
	char * errMsg = NULL;			//错误信息
	std::string sqlstr;				//SQL指令
	char db[100]="";
	std::string path = CCFileUtils::sharedFileUtils()->getWritablePath(); 
	strcpy(db, path.c_str());
	strcat(db,"save.db");
	int* count=new int[15];
	sqlite3_open(db, &pDB);
	for(int i=0;i<15;i++){
		char temp[80];
		int* inttemp=new int[1];
		sprintf(temp, "select stute from achievement_t where ID = %d",i+1);
		sqlstr=temp;
		sqlite3_exec( pDB, sqlstr.c_str() ,  DataControl::queryCallBack, inttemp, &errMsg );
		*(count+i)=*inttemp;
	}
	sqlite3_close(pDB);	
	return count;
添加这个函数(这个我的理解也不够清楚 我就照着别人写的 大家指教一下哈)

int DataControl::queryCallBack(void* para,int n_column,char** column_value,char** column_name)
{
	//para是你在sqlite3_exec 里传入的void*参数通过para参数,你可以传入一些特殊的指针(比如类指针、结构指针),
	//然后在这里面强制转换成对应的类型(这里面是void*类型,必须强制转换成你的类型才可用)。然后操作这些数据
	//n_column是这一条记录有多少个字段(即这条记录有多少列)
	//char** column_value 是个关键值,查出来的数据都保存在这里,它实际上是个1维数组(不要以为是2维数组),
	//每一个元素都是一个char*值,是一个字段内容(用字符串来表示,以\0结尾)
	//char** column_name 跟column_value是对应的,表示这个字段的字段名称
	int *temp = (int*)para;
	int count=0;
	sscanf(*(column_name+1),"%d",&count);
	*temp=count;
	return 0;
}
如插入批量数据

	sqlite3 *pDB = NULL;			//数据库指针  
	char * errMsg = NULL;			//错误信息
	char db[100]="";
	std::string path = CCFileUtils::sharedFileUtils()->getWritablePath(); 
	strcpy(db, path.c_str());
	strcat(db,"save.db");
	sqlite3_open(db, &pDB);
	std::string sqlstr;//SQL指令
	char temp[80];
	for(int i=0;i<8;i++){
		sprintf(temp, "update prop_t set rank=%d where ID = %d",prop[i],i+1);
		sqlstr=temp;
		sqlite3_exec( pDB, sqlstr.c_str() , NULL, NULL, &errMsg );
	}	
	sqlite3_close(pDB);

可下载例子 :http://download.youkuaiyun.com/detail/five50/5663775





SQLiteOpenHelper 打开自定义路径下的db数据库文件 最近在做一个安卓项目,项目使用的sqlite数据库是cocos2dx 创建的,放在了/data/data/com.*.*/files下面,而SQLiteOpenHelper打开的文件默认是放在/data/data/databases/下面的,SQLiteOpenHelper里面没有地方能改变数据库的路径。于是在网上查阅了国外大牛的解决方案,完美解决了我的问题。解决办法:        自定义Co 阅读详情

相关推荐

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

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

在Cocos2d-x中使用SQLite数据库

刚刚刚

meishadevs的个人博客 3581

cocos2dx中可用的sqlite3数据库,封装,及微型管理工具

1,cocos2dx中可以直接使用的sqlite代码 2,cocos2dx中可以直接使用的对sqlite代码的封装,可以更方便的操作数据库,大量注释告诉你函数怎么用 3,一个小巧好用的中文sqlite数据库管理工具

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

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

CoCosBoy的专栏 1613

cocos2dx sqlite3存储例子

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

cocos2dx Sqlite数据库生成工具

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

cocos2dx之引入Sqlite3数据库

从性能上说,XML方式的存储基本可以满足1 MB以下的存储要求。但在更复杂的情景中,我们可能需要存储多种不同的类,每个类也需要存储不同的对象,此时XML存储的速度就将成为瓶颈。即便分文件存储,管理起来也很麻烦,这个时候可以引入数据库来提升存储效率。  关系数据库是一种经典的数据库,其中的数据被组织成表的形式,具有相同形式的数据存放在同一张表中,表内每一行代表一个数据。在表的基础上,数据库为我们

专注,努力,勤奋 1万+

避坑指南:你的VASP CI-NEB计算为什么不收敛?常见错误分析与解决思路

本文深入解析VASP CI-NEB计算不收敛的常见问题,提供从结构准备到参数设置的系统解决方案。针对过渡态计算中的能量曲线异常、中间图像偏离等典型问题,详细介绍了诊断方法和实用工具,帮助研究者高效解决CI-NEB收敛难题,提升计算效率。

weixin_29698641的博客 431

cocos2dx- 使用SQLLite错误

原帖地址 1. 编译错误 error C2065: “sqlite3_api”: 未声明的标识符 error C2227: “->open”的左边必须指向类/结构/联合/泛型类型  类型是“'unknown-type'”     解决方案:         只#include "sqlite3.h",  不要#include "sqlite3ext.h"

warrially的专栏 1425

别再死记硬背了!用一张时序图彻底搞懂Setup和Hold检查的本质

本文深入解析数字IC设计中的Setup和Hold时序检查原理,通过波形图直观展示数据在触发器间的传递过程。详细讲解Setup检查为何关注前一周期的数据,Hold检查为何关注同一周期的数据,并提供实际设计中的考量因素和修复策略,帮助工程师彻底理解时序检查的本质。

weixin_29927965的博客 363

医学图像中的小目标病灶检测难题:我的硕士研究总结与思考

医学图像中的小目标检测和分割,主要指在CT、MRI、超声等医学影像中识别和分割微小病灶或细小结构。这些小目标通常体积小、边界模糊、特征不明显,却往往是关键病灶,例如肺部小结节、脑微出血、乳腺微钙化等。

weixin_45638136的博客 2368

cocos2dx Lua项目中添加Sqlite

1. 使用版本cocos2dx2.2.2 + VS2012,创建lua项目后,发现没有Sqlite,将添加的记录写下来:  首先下载sqlite3和lsqlite3,直接放到工程中的classes下。 创建lsqlite3.h #ifndef _LUA_SQLITE3_H_ #define _LUA_SQLITE3_H_ #include "lauxlib.h" LUALIB_API in

u012735451的专栏 1979

碳酸钙岩石酸蚀酸溶COMSOL建模:非均质对酸蚀通道的影响

多孔介质中的流动与化学反应耦合是石油工程和地下资源开发中的核心问题,酸液与岩石矿物的溶蚀过程直接关系到酸化增产效果。在碳酸盐岩储层中,盐酸与方解石的反应速率极快,酸液会优先沿高渗透区域推进,形成指状酸蚀通道,即wormhole。传统均质模型难以描述这种局部溶蚀行为,而数值模拟工具COMSOL通过耦合达西定律、稀物质传递与孔隙度演化方程,能够定量刻画酸蚀路径与渗透率的变化规律。工程实践中,模拟结果可用于预测酸液突破体积、优化注入排量,并为基质酸化方案设计提供依据。本文围绕碳酸钙岩石酸蚀酸溶COMSOL模型,探

weixin_29009401的博客 327

在Cocos2d-x中使用SQLlite数据库

From: http://blog.youkuaiyun.com/u010105970/article/details/41214173 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操

Game Developer 536

Unraid小白必看:5分钟搞定OpenWrt软路由安装(附iStoreOS配置技巧)

本文为Unraid新手提供了一份详尽的OpenWrt软路由安装与配置指南。通过虚拟机技术,在Unraid系统上快速部署基于iStoreOS的软路由,详细讲解了旁路由与主路由两种模式的网络配置、性能优化技巧及常见故障排查方法,帮助用户充分利用闲置硬件,打造高性能、可定制的家庭网络中枢。

wine的专栏 485

android HTTPS未校验服务器证书漏洞修复

上述代码是重写了域名校验的逻辑,每个证书里携带的域名是不可更改的,如果证书是合法的证书签发机构签发的,并且域名是和你要请求的域名对的上的,基本上就能确认你访问就服务器地址就是要访问的服务器地址,这样才是安全的。上述代码就是重新了证书校验的逻辑,信任所有的证书,正确的逻辑是要校验证书是否是可信任的证书签发机构所认证的,如果不校验的话你虽然是用了https加密传输,只要你的客户端用户信任了其他的证书哪怕是非法的证书,一样能够请求通过,而这个证书的服务器就可以解密你的报文,拿到你的隐私信息了。

kyzycyey的专栏 2622

android编译sqlite,Cocos2dx Android真机环境使用Sqlite数据库

1.下载sqlite源码Cocos2dx官方源码包里面已经提供了sqlite头文件和相关库文件,考虑到Android环境的差异性,故最好使用sqlite源码进行编译。下载后解压并将shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h四个文件拷贝到Cocos2dx工程源码目录。编辑proj.android\jni\Android.mk,在LOCAL_SRC_FILESsh...

weixin_34626572的博客 232

以 DeleteRestrictions 与 inlineDelete 为核心的 Fiori Elements 表格删除机制全解

SAP Fiori elements 中删除操作的设计与实现涉及多维度考量。框架默认依据 OData 元数据判断删除能力,通过 DeleteRestrictions 注解实现行级条件控制(deletable-path)。表格支持两种删除模式:工具栏集中删除与响应式表格行内删除,但二者不建议混用。关键约束包括:行内删除仅适用于 Responsive Table,且与多选功能互斥。配置需遵循三层架构:后端能力注解、前端表格形态和运行时交互。设计上强调禁用优于隐藏的可用性原则,并需保持列表页与对象页的删除体验一致

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 153

cocos2dx中的游戏储存-SQLite

在SQLite官网下载SQLite的源码,将sqlite3.h和sqlite3.c添加到项目目录下的classes中,将sqlite3.dll和sqlite3.lib添加到proj.win32\Debug.win32中头文件引入: #include "sqlite3.h" #pragma comment(lib, "sqlite3.lib")主要代码: sqlite3 *pdb

yongG3224的专栏 479

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。作为测试环境,本次使用 Registry2 搭建了私有镜像仓库,实际生产环境建议使用 Harbor;创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。

Heartsuit的博客 2461

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

cocos2dx中web+json+sqlite整合demo

这个demo是web+json+sprite的整合例子,还差一个多线程(以后补上)。  #ifndef zj1999_CCBMainPage_h #define zj1999_CCBMainPage_h #include "CcbBase.h" #include "sqlite3.h" #include "curl/curl.h" #include "json/json.h" #d

stalendp的专栏 2589

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

cocos2dx sqlite3封装使用

[cpp] view plaincopyprint? /*   * DB.h   *   *  Created on: 2013-6-8   *      Author: zhuang   */            #ifndef _DB_H_   #define _DB_H_   #include "cocos2d.h"   // DB  

Cui860的专栏 899

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Cocos2d-X之游戏存储Sqlite基础篇(四)

正在做的项目需要Sqlite数据库存储数据。小巧 、高效和易操作是Sqlite的明显特点,无平台更是强大。开源且免费啊,亲。 好的,下面步入正题。看下xcode下的Cocos2d—X的数据存储如何使用。 看下sqlite表的数据返回,会带有字段的一行: As an example of the result table format, suppose a query re

思考的智慧,知识源于思考 641

cocos2d-x 添加sqlite3 时 报 lua_Number 错误

1> f:\cocos2d-x\cocos2d-x\external\lua\lua\lua.h(99) : 参见“lua_Number”的声明1>f:\cocos2d-x\cocos2d-x\external\sqlite3-ext\lsqlite3.c(1272): error C2146: 语法错误: 缺少“;”(在标识符“n”的前面)1>f:\cocos2d-x\coco...

weixin_34245749的博客 94

SQLITE3 使用总结

SQLITE3 使用总结 2012-08-21 13:48:28 分类: SQLite/嵌入式数据库 SQLITE3 使用总结 2009-09-16 07:36 2624人阅读 评论(10) 收藏 举报 前序: Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,

李秀国的专栏 830

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

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

weixin_34367257的博客 242
上一篇: cocos2dx 与android函数的相互调用及使用jni
下一篇: cocos2dx http 链接以及采集数据 小例子
cocos_Wei
博客等级 码龄15年 77粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值