Realm移动应用数据库使用-Android

来源:互联网 发布:安防行业 linux 编辑:程序博客网 时间:2024/05/22 11:47

一、 目前APP数据存储方式

OS存储方式特点描述AndroidSQLite容量大,内存占用小,并发高,访问复杂轻型数据库系统AndroidSharedPreferences轻量数据,结构简单,访问便捷基于XML文件存储的key-value键值对数据Android文件存储图形、动态算法等文件存储,访问复杂文件IO流AndroidcontentProvider、网络存储共享数据、访问简单跨应用、云存储


二、主流框架

主流框架android:SQLiteOrmLite(jdbc);SQLite、Active Android 、 GreenDAO;Realm、SugarORM;性能MVCC数据库,API调用方法简化,相较传统DB(链接 - 查询 - 命中 - 内存拷贝 - 对象序列化)的复杂过程,不是在SQLite基础上的ORM,数据查询引擎,realm速度快一个量级(基于内存映射的Zero-Copy技术)。而且内部采用了类似git的对象版本管理机制,多线程并发操作,自动化处理存储冲突。易于移植,支持JSON,数据变更通知等高级特性。可视化1)android:Stetho+chrome:build.gradle中添加repositories 和 compile添加依赖包->initialize初始化->Chrome浏览器输入chrome://inspect/#device->inspect->Resources安全性安全性,支持加密,格式化查询,流式api

三、Android应用集成Realm

/***增*///(1)子线程事务操作mRealm.executeTransaction(new Realm.Transaction() {         @Override         public void execute(Realm realm) {             SlideCat cat= realm.createObject(SlideCat.class);             cat.setIndex(1);             cat.setUv("blackcat.png");             cat.sound("angry.ogg");         }     });     //(2)子线程事务操作final SlideCat cat= realm.createObject(SlideCat.class);             cat.setIndex(1);             cat.setUv("blackcat.png");             cat.sound("angry.ogg");      mRealm.executeTransaction(new Realm.Transaction() {          @Override          public void execute(Realm realm) {              //realm.copyToRealm(cat)//无主键              realm.copyToRealmOrUpdate(cat);//有主键          }      });//(3)子线程事务操作mRealm.beginTransaction();//开启事务SlideCat cat= realm.createObject(SlideCat.class);             cat.setIndex(1);             cat.setUv("blackcat.png");             cat.sound("angry.ogg");mRealm.commitTransaction();//提交事务


/***查*///(1)遍历RealmResults<SlideCat> catList = mRealm.where(SlideCat.class).findAll();//(2)异步任务//查询第一只黑猫RealmResults<SlideCat> catList = mRealm.where(SlideCat.class)              .equalTo("1","blackcat")              .findAllAsync();              //(3)排序RealmResults<SlideCat> catList = mRealm.where(SlideCat.class) .findAll();catList = result.sort("index"); //根据索引,正序排列catList = result.sort("index", Sort.DESCENDING);//逆序排列



/***删*///(1)deleteFromRealm()//先查找到数据final RealmResults<SlideCat > catList = mRealm.where(SlideCat.class).findAll();mRealm.executeTransaction(new Realm.Transaction() {  @Override  public void execute(Realm realm) {      catList.get(0).deleteFromRealm();  }});//(2)deleteFromRealm(int index)//先查找到数据final RealmResults<SlideCat > catList = mRealm.where(SlideCat.class).findAll();mRealm.executeTransaction(new Realm.Transaction() {  @Override  public void execute(Realm realm) {      catList.deleteFromRealm(0);  }});//(3)更多catList.deleteFirstFromRealm(); //删除user表的第一条数据catList.deleteLastFromRealm();//删除user表的最后一条数据RealmResults<SlideCat> cats = realm.where(SlideCat.class).findAll();cats.deleteAllFromRealm();//删除user表的全部数据

/***改*///(1)mRealm.executeTransaction(new Realm.Transaction() {    @Override    public void execute(Realm realm) {        //先查找到更新对象        SlideCat cat = mRealm.where(SlideCat.class).findFirst();        cat.setUv("whitecat.png");        cat.setSound("smile.ogg")    }});//(2)先查找到数据final RealmResults<SlideCat > catList = mRealm.where(SlideCat.class).findAll();mRealm.executeTransaction(new Realm.Transaction() {  @Override  public void execute(Realm realm) {      SlideCat cat = catList.get(0);      cat.setUv("whitecat.png");      cat.sound("smile.ogg");});



原创粉丝点击