当前位置:K88软件开发文章中心编程语言APP编程CrossApp → 文章内容

SQlite的使用

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-23 13:52:45

由 ?﹏???ζ???﹏﹏? 创建, 最后一次修改 2016-09-08 在CrossApp中,简单数据存储,可以使用CAUserDefault。那么如何存储大量,不规则的数据?我们可以使用SQLite数据库存储数据。SQLite是使用非常广泛的嵌入式数据库,它有小巧 、高效、跨平台、开源免费和易操作的特点。SQLite数据库是使用C语言来编写的,在CrossApp中使用也是非常容易的。CrossApp已经添加了SQlite的,在CrossApp\extensions\sqlite3目录,我直接使用就可以了。引入头文件#include "CrossAppExt.h"创建数据库//数据库指针sqlite3 *pdb=NULL; //保存数据库的路径std::string path= CCFileUtils::sharedFileUtils()->getWritablePath()+"save.db"; std::string sql;int result; //打开一个数据,如果该数据库不存在,则创建一个新的数据库文件result=sqlite3_open(path.c_str(),&pdb); if(result!=SQLITE_OK){ CCLog("open database failed, number%d",result);}SQL语句//创建数据库表的sql语句sql="create table student(ID integer primary key autoincrement,name text,sex text)";创建Talbe//创建表格result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL); if(result!=SQLITE_OK) CCLog("create table failed");插入//向表内插入3条数据sql="insert into student values(1,'student1','male')"; result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL); if(result!=SQLITE_OK) CCLog("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) CCLog("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) CCLog("insert data failed!");查询//查询结果char **re; //行、列int r,c; //查询数据sqlite3_get_table(pdb,"select * from student",&re,&r,&c,NULL); CCLog("row is %d,column is %d",r,c); //将查询出的数据通过log输出for(int i=1;i<=r;i++){ for(int j=0;j<c;j++) { CCLog("%s",re[i*c+j]); }} sqlite3_free_table(re);删除sql="delete from student where ID=1"; //删除id=1的学生的信息result=sqlite3_exec(pdb,sql.c_str(), NULL,NULL,NULL); if(result!=SQLITE_OK) CCLog("delete data failed!");注意使用sqlite一定要注意的内存管理问题,那就是打开数据库之后,数据操作完成之后,一定要关闭数据库,否侧会造成内存泄漏。sqlite3_close(pdb);SQlite保存路径Android:/data/data/com.youCompany.Helloworld/files/save.dbIOS:位于程序沙盒的文档目录下../Documents/save.db

SQlite的使用