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

一、 目前APP数据存储方式

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


二、主流框架

主流框架 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");
});



猜你喜欢

转载自blog.csdn.net/yeyu_wuhen/article/details/78260918
今日推荐