SQLite集成与用法

简介: <div style="top: 0px;"></div><span style="font-family:宋体;font-size:14px;"></span><span style="font-family:宋体;font-size:14px;"></span><span style="font-family:宋体;font-size:14px;"></span><span styl

SQLite集成与用法

概述

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

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

准备

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

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


  
  
cocos new HelloWorld -p com.your_company.HelloWorld -l cpp 
  
  

  
  
 
 

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

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 数据库

  
 sqlite3 *pdb=NULL;//1     std::string path= FileUtils::getInstance()->getWritablePath()+"save.db";//2      std::string sql;     int result;     result=sqlite3_open(path.c_str(),&pdb);//3     if(result!=SQLITE_OK)     {         log("open database failed,  number%d",result);     }
  1. 数据库指针

  2. 指定数据库的路径

  3. 打开一个数据库,如果该数据库不存在,则创建一个数据库文件

SQL语句

 sql="create table student(ID integer primary key autoincrement,name text,sex text)";//1

  1. 创建表的SQL语句

创建Table

   
result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);//1     if(result!=SQLITE_OK)         log("create table failed");

  1. 创建表

插入数据

    
sql="insert into student  values(1,'student1','male')";     result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);     if(result!=SQLITE_OK)         log("insert data failed!");      sql="insert into student  values(2,'student2','female')";     result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);     if(result!=SQLITE_OK)         log("insert data failed!");      sql="insert into student  values(3,'student3','male')";     result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);     if(result!=SQLITE_OK)         log("insert data failed!");

  1. 向表中插入3条数据

查询

  
  char **re;//查询结果     int r,c;//行、列     sqlite3_get_table(pdb,"select * from student",&re,&r,&c,NULL);//1     log("row is %d,column is %d",r,c);      for(int i=1;i<=r;i++)//2     {         for(int j=0;j<c;j++)         {             log("%s",re[i*c+j]);         }     }     sqlite3_free_table(re);


  1. 查询表中的数据

  2. 将查询结果的log输出

查询结果:

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


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

删除

   

    
   sql="delete from student where ID=1";     result=sqlite3_exec(pdb,sql.c_str(), NULL,NULL,NULL);//1     if(result!=SQLITE_OK)         log("delete data failed!");

    
  1. 删除ID=1的学生

使用上面的查询语句查询删除ID=1的学生后的数据

查询结果:

cocos2d: row is 2,column is 3 cocos2d: 2 cocos2d: student2 cocos2d: female cocos2d: 3 cocos2d: student3 cocos2d: male


我们可以看到,表中ID=1的数据已经被删除了

注意:

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

sqlite3_close(pdb);


数据文件存放的位置

  • Android




    /data/data/com.youCompany.Helloworld/files/save.db

 
 
 

  • iOS:

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


  
  

 
../Documents/save.db




 

 

 



目录
相关文章
|
15天前
|
SQL 存储 数据管理
一篇文章带你掌握SQLite3基本用法
通过本文的介绍,希望您能深入理解SQLite3的基本用法,并在实际开发中灵活运用这些知识,提升数据管理效率。
55 5
|
JSON 数据格式
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据 by 页一
1336 0
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据
|
存储 SQL 关系型数据库
Android数据库Sqlite的基本用法及升级策略
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有ODBC接口,同样比起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
313 0
|
SQL 数据库 Android开发
android SQLite数据库用法图文详解(附源码)
(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景         SQLite是嵌入式设备使用的一种轻量型数据库。可以通过执行sql语句对数据库进行操作,android也为其提供了完善的函数接口支持。下面就来实现一个简单的数据库,可以实现查询以及插入等功能。 例图如下:                               
1415 0
|
SQL 数据库管理
SQLite的limit用法 SQLLite分页
如果我要去11-20的Account表的数据 Select * From Account Limit 9 Offset 10; 以上语句表示从Account表获取数据,跳过10行,取9行 嗯,我觉得这个特性足够让很多的web中型网站使用这个了。
1133 0
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
29天前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
53 0
|
5月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
322 6
|
5月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
428 4

相关实验场景

更多