SQLite集成与用法


SQLite集成与用法

概述

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

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

准备

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

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


cocos new 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.c和sqlite3.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

 

 

 





时间: 2024-08-16 05:39:31

SQLite集成与用法的相关文章

iOS中sqlite的详细用法_IOS

本文实例为大家分享了ios中sqlite的具体操作方法,供大家参考,具体内容如下 #import <sqlite3.h> @interface ViewController () { sqlite3 *_sqldb; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typicall

Android使用Sqlite存储数据用法示例_Android

本文实例讲述了Android使用Sqlite存储数据的方法.分享给大家供大家参考,具体如下: 一般在开发程序中,经常使用数据的存储功能,如在使用Delphi开发程序时,存储程序的简单设置的INI文件,在C#开发中有时也需要存储简单的设置,个人一般存储在XML中,也在INI中存储过,但是不如XML使用方便,那么这些都是简单的数据存储功能,在Android中也支持这样的文件存储,但是现在这里主要说的还是使用SQLite存储数据,SQLite是一种跨平台的数据库,是单文件式的,如咱们平常见的最多的Ac

Android使用Sqlite存储数据用法示例

本文实例讲述了Android使用Sqlite存储数据的方法.分享给大家供大家参考,具体如下: 一般在开发程序中,经常使用数据的存储功能,如在使用Delphi开发程序时,存储程序的简单设置的INI文件,在C#开发中有时也需要存储简单的设置,个人一般存储在XML中,也在INI中存储过,但是不如XML使用方便,那么这些都是简单的数据存储功能,在Android中也支持这样的文件存储,但是现在这里主要说的还是使用SQLite存储数据,SQLite是一种跨平台的数据库,是单文件式的,如咱们平常见的最多的Ac

Android提高之SQLite分页读取实现方法_Android

一般来说,Android自身就包含了常用于嵌入式系统的SQLite,这样就免去了开发者自己移植安装的功夫.SQLite 支持多数SQL92标准,很多常用的SQL命令都能在SQLite上面使用,除此之外Android还提供了一系列自定义的方法去简化对SQLite数据库的操作.不过有跨平台需求的程序还是建议使用标准的SQL语句,毕竟这样容易在多个平台之间进行移植. 先来贴出本文程序运行的结果图: 本文实例程序主要讲解了SQLite的基本用法,如:创建数据库,使用SQL命令查询数据表.插入数据,关闭数

ListActivity+sqlite+SimpleCursorAdapter简单实例

下面是一个简单实例,主要演示ListActivity+sqlite+SimpleCursorAdapter的用法. 实例打包下载:http://download.csdn.net/detail/yang_hui1986527/4419708 DBHelper.java package com.example.sqlitedemo.db; import android.content.Context; import android.database.SQLException; import and

SQLite数据库中的SQL语句及使用

一.如何获取SQLite最新版本 官方站点:http://www.sqlite.org/ 从http://www.sqlite.org/网站的Download页面获取 二.Windows下的SQLite的源代码是哪个软件压缩包? sqlite-amalgamation-3_6_22.zip是SQLite的windows下源码文件 三.Window下的SQLite命令行工具 sqlite-3_6_22.zip 四.Window下的SQLite开发库,即动态链接库以及DEF文件 sqlitedll-

SQLite 表达式(http://www.w3cschool.cc/sqlite/sqlite-expressions.html)

SQLite 表达式 表达式是一个或多个值.运算符和计算值的SQL函数的组合. SQL 表达式与公式类似,都写在查询语言中.您还可以使用特定的数据集来查询数据库. 语法 假设 SELECT 语句的基本语法如下: SELECT column1, column2, columnN FROM table_name WHERE [CONTION | EXPRESSION]; 有不同类型的 SQLite 表达式,具体讲解如下: SQLite - 布尔表达式 SQLite 的布尔表达式在匹配单个值的基础上获

SQLite Where 子句(http://www.w3cschool.cc/sqlite/sqlite-where-clause.html)

SQLite Where 子句 SQLite的 WHERE 子句用于指定从一个表或多个表中获取数据的条件. 如果满足给定的条件,即为真(true)时,则从表中返回特定的值.您可以使用 WHERE 子句来过滤记录,只获取需要的记录. WHERE 子句不仅可用在 SELECT 语句中,它也可用在 UPDATE.DELETE 语句中,等等,这些我们将在随后的章节中学习到. 语法 SQLite 的带有 WHERE 子句的 SELECT 语句的基本语法如下: SELECT column1, column2

SQLite 运算符(http://www.w3cschool.cc/sqlite/sqlite-operators.html)

SQLite 运算符 SQLite 运算符是什么? 运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算. 运算符用于指定 SQLite 语句中的条件,并在语句中连接多个条件. 算术运算符 比较运算符 逻辑运算符 位运算符 SQLite 算术运算符 假设变量 a=10,变量 b=20,则: 运算符 描述 实例 + 加法 - 把运算符两边的值相加 a + b 将得到 30 - 减法 - 左操作数减去右操作数 a - b 将得到 -10 * 乘法 -