课程表

入门与环境搭建

简单控件的使用

视图控制

调用、存储、网络和动画

其他控件的使用

工具箱
速查手册

SQlite的使用

当前位置:免费教程 » 移动开发 » CrossApp

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

SQLite数据库是使用C语言来编写的,在CrossApp中使用也是非常容易的。

CrossApp已经添加了SQlite的,在CrossApp\extensions\sqlite3目录,我直接使用就可以了。


引入头文件

  1. #include "CrossAppExt.h"


创建数据库

  1. //数据库指针
  2. sqlite3 *pdb=NULL;
  3. //保存数据库的路径
  4. std::string path= CCFileUtils::sharedFileUtils()->getWritablePath()+"save.db";
  5. std::string sql;
  6. int result;
  7. //打开一个数据,如果该数据库不存在,则创建一个新的数据库文件
  8. result=sqlite3_open(path.c_str(),&pdb);
  9. if(result!=SQLITE_OK)
  10. {
  11. CCLog("open database failed, number%d",result);
  12. }


SQL语句

//创建数据库表的sql语句

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


创建Talbe

  1. //创建表格
  2. result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);
  3. if(result!=SQLITE_OK)
  4. CCLog("create table failed");


    插入

    1. //向表内插入3条数据
    2. sql="insert into student values(1,'student1','male')";
    3. result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);
    4. if(result!=SQLITE_OK)
    5. CCLog("insert data failed!");
    6. sql="insert into student values(2,'student2','female')";
    7. result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);
    8. if(result!=SQLITE_OK)
    9. CCLog("insert data failed!");
    10. sql="insert into student values(3,'student3','male')";
    11. result=sqlite3_exec(pdb,sql.c_str(),NULL,NULL,NULL);
    12. if(result!=SQLITE_OK)
    13. CCLog("insert data failed!");

    查询

    1. //查询结果
    2. char **re;
    3. //行、列
    4. int r,c;
    5. //查询数据
    6. sqlite3_get_table(pdb,"select * from student",&re,&r,&c,NULL);
    7. CCLog("row is %d,column is %d",r,c);
    8. //将查询出的数据通过log输出
    9. for(int i=1;i<=r;i++)
    10. {
    11. for(int j=0;j<c;j++)
    12. {
    13. CCLog("%s",re[i*c+j]);
    14. }
    15. }
    16. sqlite3_free_table(re);


    删除

    1. sql="delete from student where ID=1";
    2. //删除id=1的学生的信息
    3. result=sqlite3_exec(pdb,sql.c_str(), NULL,NULL,NULL);
    4. if(result!=SQLITE_OK)
    5. CCLog("delete data failed!");

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

    1. sqlite3_close(pdb);

    SQlite保存路径

    Android:

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

    IOS:

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


    1. ../Documents/save.db

    转载本站内容时,请务必注明来自W3xue,违者必究。
     友情链接:直通硅谷  点职佳  北美留学生论坛

    本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

    W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
    关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
    皖ICP备17017327号-2 皖公网安备34020702000426号